Python的用處還是比較的大的,在工作當(dāng)中,方方面面的都會(huì)遇到使用Python這門技能。那么,怎么實(shí)現(xiàn)圖形之間的轉(zhuǎn)換呢?比如,將我們平常的頭像,轉(zhuǎn)換成為動(dòng)漫風(fēng)格的呢?下面就給大家詳細(xì)解答下。
最近在Github上面有看到將頭像轉(zhuǎn)化成動(dòng)漫風(fēng)的項(xiàng)目,但是對(duì)于不少?zèng)]有技術(shù)背景的同學(xué)來說可能就不知道該怎么使用了,小編今天制作了一個(gè)UI界面,大家可以通過一鍵點(diǎn)擊就實(shí)現(xiàn)頭像照片轉(zhuǎn)化成動(dòng)漫風(fēng)格的功能。
PyQt5框架
用Python編程語言來制作UI界面的框架有很多哈,大家原則上哪種框架用的順手就用哪種框架,小編這里使用的是PyQt的框架,因?yàn)樗С质謩?dòng)繪制控件,并且可以動(dòng)態(tài)加載,我們?cè)赑ycharm當(dāng)中添加上QtDesigner作為外部工具,來進(jìn)行界面設(shè)置,生成ui文件,步驟如下
其中需要填寫的內(nèi)容當(dāng)中:
Name:可以自己自定義
program:QtDesigner的安裝路徑,小編這里引用的是Anaconda下面安裝的PyQt5-tools的相關(guān)文件
parameter:不填
directory:
在導(dǎo)入成功之后,我們打開QtDesigner的初始界面
然后在界面的左邊,我們能看到一系列的空間,我們可以將這些控件拖拽到界面當(dāng)中進(jìn)行UI的設(shè)計(jì),
其中常用的控件有:
Push Button:按鈕
Line Edit:文本編輯框
Label:標(biāo)簽
Horizontal Line:水平線
Graphics View:繪畫
代碼邏輯
當(dāng)我們點(diǎn)擊“選擇圖片”實(shí)現(xiàn)圖片上傳的功能,代碼如下
#選擇本地圖片上傳
def openImage(self): global imgNamepath#這里為了方便別的地方引用圖片路徑,將其設(shè)置為全局變量 imgNamepath,imgType=QFileDialog.getOpenFileName(self.ui,"選擇圖片","D:","*.jpg;;*.png;;All Files(*)") img=QtGui.QPixmap(imgNamepath).scaled(self.ui.label_4.size(),aspectMode=Qt.KeepAspectRatio) print("img:",img.width(),img.height()) self.ui.label_4.setFixedSize(img.width(),img.height()) #在label控件上顯示選擇的圖片 self.ui.label_4.setPixmap(img) self.ui.label_4.repaint() #顯示所選圖片的路徑 self.ui.lineEdit.setText(imgNamepath) 同樣地,當(dāng)我們點(diǎn)擊“保存”按鈕的時(shí)候,實(shí)現(xiàn)圖片保存在本地的功能,代碼如下 def saveImage(self): img=self.ui.label_5.pixmap().toImage() fpath,ftype=QFileDialog.getSaveFileName(self.ui,"保存","D:","*.jpg;;*.png;;All Files(*)") img.save(fpath) 而當(dāng)我們點(diǎn)擊“開始”按鈕的時(shí)候便嘗試將上傳的圖片轉(zhuǎn)換成動(dòng)漫風(fēng)格,代碼如下 def startAction(self): net=Generator() net.load_state_dict(torch.load("./weights/face_paint_512_v2.pt",map_location="cpu")) net.to("cpu").eval() image=self.load_image(imgNamepath) print("開始加載圖片.......") with torch.no_grad(): image=to_tensor(image).unsqueeze(0)*2-1 out=net(image.to("cpu"),False).cpu() out=out.squeeze(0).clip(-1,1)*0.5+0.5 out=to_pil_image(out) image_name=imgNamepath.split(".")[0] out.save(image_name+"_animegan"+".png") print("圖片保存成功??!") imgShow=QtGui.QPixmap(image_name+"_animegan"+".png").scaled(self.ui.label_5.size(),aspectMode=Qt.KeepAspectRatio) self.ui.label_5.setFixedSize(imgShow.width(),imgShow.height()) self.ui.label_5.setScaledContents(True) self.ui.label_5.setPixmap(imgShow) print(f"image saved:{image_name}")
代碼中我們是引用了預(yù)先訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò),并且默認(rèn)的是用電腦的CPU來跑這個(gè)模型,所以整體運(yùn)行下來需要點(diǎn)時(shí)間,這個(gè)根據(jù)不同電腦的硬件配置而定,其余的代碼如下所示
class Pic1: def __init__(self): self.ui=QUiLoader().load('pic_1.ui') self.ui.pushButton.clicked.connect(self.openImage) self.ui.pushButton_2.clicked.connect(self.startAction) self.ui.pushButton_3.clicked.connect(self.saveImage)
然后我們開始運(yùn)行整個(gè)界面
if __name__=='__main__': app=QApplication([]) #顯示創(chuàng)建的界面 MainWindow=Pic1()#創(chuàng)建窗體對(duì)象 MainWindow.ui.show()#顯示窗體 app.exit(app.exec_())#程序關(guān)閉時(shí)退出進(jìn)程
最后的最后我們通過pyinstaller將其打包成exe可執(zhí)行文件,當(dāng)然代碼當(dāng)中我們用到了外部的第三方文件,因此打包的過程也會(huì)比單個(gè)文件的打包會(huì)更加的復(fù)雜一些,下一篇文章中小編再來詳細(xì)的說明如何操作
以上就位大家總結(jié)完畢了,希望可以為各位讀者帶來幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128319.html
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:作者微信公眾號(hào)的皮卡丘歡迎大家搜索關(guān)注知乎機(jī)器學(xué)習(xí)美顏簡(jiǎn)單品讀小說實(shí)現(xiàn)顏值預(yù)測(cè)預(yù)測(cè)比賽結(jié)果制作且版飛機(jī)大戰(zhàn)實(shí)現(xiàn)簡(jiǎn)單的換臉術(shù)遺傳算法擬合圖像實(shí)現(xiàn)貓臉檢測(cè)分析個(gè)人音樂收藏垃圾郵件識(shí)別深度學(xué)習(xí)強(qiáng)化學(xué)習(xí)玩破解游戲?qū)崿F(xiàn)簡(jiǎn)單的機(jī)器翻譯模型學(xué)寫作實(shí)現(xiàn)文本 作者:Charles微信公眾號(hào):Charles的皮卡丘(歡迎大家搜索關(guān)注)知乎:https://zhuanlan.zhihu.com/p/... ...
摘要:作者小魚干圖像處理一直是個(gè)實(shí)用且熱門的研究領(lǐng)域,而本周的項(xiàng)目則多個(gè)圖像項(xiàng)目上榜。最后是用途更廣的圖片壓縮工具,的復(fù)雜度僅為它能快速對(duì)圖片進(jìn)行無損壓縮。作者:HelloGitHub-小魚干圖像處理一直是個(gè)實(shí)用且熱門的研究領(lǐng)域,而本周的 GitHub 項(xiàng)目則多個(gè)圖像項(xiàng)目上榜。先是勉強(qiáng)和圖像處理搭邊的渲染引擎 Filament,它能渲染出效果極佳的 3D 實(shí)物圖。再是去年很火的聲稱漫畫風(fēng)圖片的 A...
摘要:本屆世界杯中,在日本與比利時(shí)的比賽中,日本球迷們高舉隊(duì)長(zhǎng)小翼的畫面就足以證明這部動(dòng)漫對(duì)日本足球的深遠(yuǎn)影響。本文將介紹如何利用爬蟲來下載足球小將的動(dòng)漫圖片。 ??盡管俄羅斯世界杯的熱度已經(jīng)褪去,但這屆世界杯還是給全世界人民留下了無數(shù)難忘的回憶,不知你的回憶里有沒有日本隊(duì)的身影?本次世界杯中,日本隊(duì)的表現(xiàn)讓人眼前一亮,很難想象,就是這樣一只隊(duì)伍,二十幾年還是我們國家足球隊(duì)的水平一樣,也許還...
閱讀 923·2023-01-14 11:38
閱讀 895·2023-01-14 11:04
閱讀 756·2023-01-14 10:48
閱讀 2055·2023-01-14 10:34
閱讀 961·2023-01-14 10:24
閱讀 840·2023-01-14 10:18
閱讀 510·2023-01-14 10:09
閱讀 588·2023-01-14 10:02