您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么利用Python實現一鍵將頭像轉成動漫風”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么利用Python實現一鍵將頭像轉成動漫風”吧!
用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_()) # 程序關閉時退出進程
效果如下
到此,相信大家對“怎么利用Python實現一鍵將頭像轉成動漫風”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。