利用Python实现一键将头像转成动漫风

目录
  • PyQt5框架
  • 代码逻辑

最近在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可执行文件,当然代码当中我们用到了外部的第三方文件,因此打包的过程也会比单个文件的打包会更加的复杂一些,下一篇文章中小编再来详细的说明如何操作

以上就是利用Python实现一键将头像转成动漫风的详细内容,更多关于Python头像转动漫风的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python OpenCV实现人物动漫化效果

    目录 前言 效果展示 代码展示 前言 前几天玩抖音,发现一个人像动漫化的操作,觉得很好玩儿.我心想:python既然这么强大,是不是也可以使用python程序来实现这样一个操作呢? 哈哈!我自己当然是没有这个本事编写这样一个牛逼的程序出来,但是百度可以呀,并且还很好用.百度AI开放平台给我们提供了完整的接口,甚至贴心的将代码都给我们写好了.这些接口还支持很多主流语言都呢,像Java.Python.PHP.C#等,我们做的就是直接调用它即可. 效果怎么样呢?我们先来看看下方的对比图吧. 效果展示

  • python实现人像动漫化的示例代码

    利用百度api实现人像动漫化 百度API地址:https://ai.baidu.com/tech/imageprocess/selfie_anime 技术文档:https://ai.baidu.com/ai-doc/IMAGEPROCESS/Mk4i6olx5 注册百度账号,开通实现人像动漫化,创建应用. # encoding:utf-8 import requests import base64 # client_id 为官网获取的AK, client_secret 为官网获取的SK host

  • Pytorch实现WGAN用于动漫头像生成

    WGAN与GAN的不同 去除sigmoid 使用具有动量的优化方法,比如使用RMSProp 要对Discriminator的权重做修整限制以确保lipschitz连续约 WGAN实战卷积生成动漫头像 import torch import torch.nn as nn import torchvision.transforms as transforms from torch.utils.data import DataLoader from torchvision.utils import s

  • 基于Python实现简易的自制头像神器

    目录 前言 正文 1)原理简介 2)准备中 3)代码展示 4)效果展示 前言 都说新年新气象,所以,为了迎接2022年的到来! 小编决定换一波头像——于是问题来了!换一个什么样的头像比较合适呢? 来!开一波脑洞——作为一个不会PS的普通程序员要怎么快速制作一个属于自己的渐变头像呢?十行 Python 代码就能解决,非常简单! ​ 正文 首先来给大家白嫖几组新年的头像啦!快接着哈 1)原理简介 主要使用到了 Python 的 PIL 库(pip install Pillow),实现步骤也很简单:

  • Python matplotlib绘制xkcd动漫风格的图表

    目录 XKCD matplotlib对XKCD风格的支持 创建XKCD风格的图表 使用中文字体创建XKCD风格的图表 1.安装字体 2.更新中文字体 XKCD xkcd是兰道尔·门罗(Randall Munroe)的网名,又是他所创作的漫画的名称.作者兰道尔·门罗(Randall Munroe)给作品的定义是一部“关于浪漫.讽刺.数学和语言的网络漫画”(A webcomic of romance,sarcasm, math, and language),被网友誉为深度宅向网络漫画.XKCD官方网

  • 利用Python实现一键将头像转成动漫风

    目录 PyQt5框架 代码逻辑 最近在Github上面有看到将头像转化成动漫风的项目,但是对于不少没有技术背景的同学来说可能就不知道该怎么使用了,小编今天制作了一个UI界面,大家可以通过一键点击就实现头像照片转化成动漫风格的功能. PyQt5框架 用Python编程语言来制作UI界面的框架有很多哈,大家原则上哪种框架用的顺手就用哪种框架,小编这里使用的是PyQt的框架,因为它支持手动绘制控件,并且可以动态加载,我们在Pycharm当中添加上QtDesigner作为外部工具,来进行界面设置,生成u

  • 如何利用Python给自己的头像加一个小国旗(小月饼)

    今年国庆节也是中秋节,首先祝大家节日快乐,本文我们使用 Python 来给自己的头像加一个小国旗或小月饼. 国旗 对于国旗,我们可以使用 Python 来画一个,用到的 Python 库是大家比较熟悉的 turtle,我们的五星红旗组成元素包括:红底.一颗黄的主星和四颗黄的副星. 首先画一个长方形的红底,代码实现如下: turtle.setup(600, 400, 0, 0) turtle.bgcolor("red") 效果如下: 接着画一颗主星,代码实现如下: turtle.fill

  • 利用Python实现多种风格的照片处理

    目录 前言 照片修复的具体实操 将照片风格素描化的具体实操 前言 在上一篇教程当中呢,小编向大家展示了如何通过一键点击实现将头像变成动漫风的实践,无非是在制作的UI界面当中,在用户上传了照片之后,后端的脚本在接收到照片之后,借助对抗生成神经网络来生成具有动漫风格的头像. 用Python制作可视化GUI界面,一键实现将头像转成动漫风! 今天小编想在上述成果的基础之上,添加上将“修复老照片”的功能,曾经在抖音上面也是吸引了不少的流量,内容就是发布一张老照片修复后的效果呈现,毕竟老照片容易引起人的共鸣

  • Python 将 QQ 好友头像生成祝福语的实现代码

    本文我们来看一下如何使用 Python 将 QQ 好友头像拼成"五一快乐"四个字.我们可以将整个实现过程分为两步:爬取 QQ 好友头像.利用好友头像生成文字. 爬取头像 爬取 QQ 好友头像我们需要借助于 QQ 邮箱,首先我们从浏览器上登录 QQ 邮箱,之后按 F12 键打开开发者工具并用鼠标选中 Network 选项,如下图所示: 再接着我们按 F5 键刷新一下网页,然后在 Filter 中输入 laddr_lastlist ,如下图所示: 我们再点 Name 下的链接,点击之后右侧

  • 利用python将xml文件解析成html文件的实现方法

    功能就是题目所述,我的python2.7,装在windows环境,我使用的开发工具是wingide 6.0 1.首先是我设计的简单的一个xml文件,也就是用来解析的源文件 下面是这个文件website.xml内容: <website> <page name="index" title="fuckyou"> <h1>welcome to</h1> <p>this is a moment</p> &

  • 利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据每个像素点的RGB值设置excel每个方格的颜色值: 根据像素点的坐标,写入excel文件: 保存退出: 示例代码 from PIL import Image import numpy as np import time import matplotlib.pyplot as plt import

  • 利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下:   使用PIL图像处理库,导入moudle from PIL import Image from PIL import ImageFont from PIL import ImageDraw def white_to_transparent(img): img=img.convert('RGBA') #返回一个转换后的图像的副本 dat

  • 利用python下载scihub成文献为PDF操作

    scihub是科研利器,这就不多说了,白嫖文献的法门,一般采用的是网页或者桌面程序,一般都会跳转到网页进行加载出文献,但是这很不方便,毕竟全手动,这里无意中看到一个写好的pip工具scihub2pdf,于是试一下它手动威力,如果这能够成功,也就是我们以后如果想批量下载也是没问题的. 1.首先我们得安装它: pip install scihub2pdf 2.紧接着安装npm和phantomjs,因为这个代码里面使用了phantomjs yum install npm 切换到国内源,威力网速给力,n

  • 利用Python将图片批量转化成素描图的过程记录

    目录 前言 程序 Method 1 Method 2 完整代码 结果 总结 前言 正常图片转化成素描图片无非对图片像素的处理,矩阵变化而已.目前很多拍照修图App都有这一功能,核心代码不超30行.如下利用 Python 实现读取一张图片并将其转化成素描图片.至于批处理也简单,循环读取文件夹里的图片处理即可.具体代码可以去我的 GitHub下载. 程序 Method 1 def plot_sketch(origin_picture, out_picture) : a = np.asarray(Im

  • 利用 Python 把小伙伴制作成表情包

    目录 一.项目说明 二.实现步骤 三.Python实现 1.导入需要的库 2.绘图函数 3.导入前景照片 4.等比例缩放前景照片 5.对前景照片进行二值化处理 6.提取出感兴趣区域 7.旋转图片 8.将一些不需要的黑色区域删除掉 9.再次提取感兴趣区域并缩放 10.导入背景图片 11.组合两张图片成表情包 12.在表情包下面添加文本 12.1添加英文文本 12.2添加中文文本 13.保存表情包 四.完整代码 一.项目说明 在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的

随机推荐