Python的用處還是比較的大的,在工作當中,方方面面的都會遇到使用Python這門技能。那么,怎么實現圖形之間的轉換呢?比如,將我們平常的頭像,轉換成為動漫風格的呢?下面就給大家詳細解答下。
最近在Github上面有看到將頭像轉化成動漫風的項目,但是對于不少沒有技術背景的同學來說可能就不知道該怎么使用了,小編今天制作了一個UI界面,大家可以通過一鍵點擊就實現頭像照片轉化成動漫風格的功能。
PyQt5框架
用Python編程語言來制作UI界面的框架有很多哈,大家原則上哪種框架用的順手就用哪種框架,小編這里使用的是PyQt的框架,因為它支持手動繪制控件,并且可以動態加載,我們在Pycharm當中添加上QtDesigner作為外部工具,來進行界面設置,生成ui文件,步驟如下
其中需要填寫的內容當中:
Name:可以自己自定義
program:QtDesigner的安裝路徑,小編這里引用的是Anaconda下面安裝的PyQt5-tools的相關文件
parameter:不填
directory:
在導入成功之后,我們打開QtDesigner的初始界面
然后在界面的左邊,我們能看到一系列的空間,我們可以將這些控件拖拽到界面當中進行UI的設計,
其中常用的控件有:
Push Button:按鈕
Line Edit:文本編輯框
Label:標簽
Horizontal Line:水平線
Graphics View:繪畫
代碼邏輯
當我們點擊“選擇圖片”實現圖片上傳的功能,代碼如下
#選擇本地圖片上傳
def openImage(self): global imgNamepath#這里為了方便別的地方引用圖片路徑,將其設置為全局變量 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) 同樣地,當我們點擊“保存”按鈕的時候,實現圖片保存在本地的功能,代碼如下 def saveImage(self): img=self.ui.label_5.pixmap().toImage() fpath,ftype=QFileDialog.getSaveFileName(self.ui,"保存","D:","*.jpg;;*.png;;All Files(*)") img.save(fpath) 而當我們點擊“開始”按鈕的時候便嘗試將上傳的圖片轉換成動漫風格,代碼如下 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}")
代碼中我們是引用了預先訓練完成的神經網絡,并且默認的是用電腦的CPU來跑這個模型,所以整體運行下來需要點時間,這個根據不同電腦的硬件配置而定,其余的代碼如下所示
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)
然后我們開始運行整個界面
if __name__=='__main__': app=QApplication([]) #顯示創建的界面 MainWindow=Pic1()#創建窗體對象 MainWindow.ui.show()#顯示窗體 app.exit(app.exec_())#程序關閉時退出進程
最后的最后我們通過pyinstaller將其打包成exe可執行文件,當然代碼當中我們用到了外部的第三方文件,因此打包的過程也會比單個文件的打包會更加的復雜一些,下一篇文章中小編再來詳細的說明如何操作
以上就位大家總結完畢了,希望可以為各位讀者帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128319.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:作者微信公眾號的皮卡丘歡迎大家搜索關注知乎機器學習美顏簡單品讀小說實現顏值預測預測比賽結果制作且版飛機大戰實現簡單的換臉術遺傳算法擬合圖像實現貓臉檢測分析個人音樂收藏垃圾郵件識別深度學習強化學習玩破解游戲實現簡單的機器翻譯模型學寫作實現文本 作者:Charles微信公眾號:Charles的皮卡丘(歡迎大家搜索關注)知乎:https://zhuanlan.zhihu.com/p/... ...
摘要:作者小魚干圖像處理一直是個實用且熱門的研究領域,而本周的項目則多個圖像項目上榜。最后是用途更廣的圖片壓縮工具,的復雜度僅為它能快速對圖片進行無損壓縮。作者:HelloGitHub-小魚干圖像處理一直是個實用且熱門的研究領域,而本周的 GitHub 項目則多個圖像項目上榜。先是勉強和圖像處理搭邊的渲染引擎 Filament,它能渲染出效果極佳的 3D 實物圖。再是去年很火的聲稱漫畫風圖片的 A...
摘要:本屆世界杯中,在日本與比利時的比賽中,日本球迷們高舉隊長小翼的畫面就足以證明這部動漫對日本足球的深遠影響。本文將介紹如何利用爬蟲來下載足球小將的動漫圖片。 ??盡管俄羅斯世界杯的熱度已經褪去,但這屆世界杯還是給全世界人民留下了無數難忘的回憶,不知你的回憶里有沒有日本隊的身影?本次世界杯中,日本隊的表現讓人眼前一亮,很難想象,就是這樣一只隊伍,二十幾年還是我們國家足球隊的水平一樣,也許還...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1983·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02