教你用python制作人脸卡通画(附源码)

您所在的位置:网站首页 卡通画人脸怎么画大全 教你用python制作人脸卡通画(附源码)

教你用python制作人脸卡通画(附源码)

2024-07-02 09:04| 来源: 网络整理| 查看: 265

教你用python制作人脸卡通画(附源码) 效果展示: 请添加图片描述 请添加图片描述 让我们开始学习之路: 原理:利用第三方人脸接口将图像人脸化 第三方接口注册地址:https://ai.minivision.cn/#/login 注册成功后-进入控制台-创建APP Key 记录好 APP Key 和App Secret 参见API文档开始调用吧

from PySide2.QtWidgets import QApplication from PySide2.QtUiTools import QUiLoader from PySide2.QtCore import QFile from PySide2.QtWidgets import QFileDialog from PySide2 import QtCore from PySide2 import QtGui import os import hashlib import time import json import requests import base64 QtCore.QCoreApplication.addLibraryPath(os.path.join(os.path.dirname(QtCore.__file__), "plugins")) #显示图片用 class Stats: #定义类 def __init__(self): #导入UI窗口 #从文件中加载UI界面 qfle_stats=QFile('xs.ui') #导入UI界面固定写法 qfle_stats.open(QFile.ReadOnly) #导入UI界面固定写法 qfle_stats.close() #导入UI界面固定写法 self.ui=QUiLoader().load(qfle_stats) #定义窗口 self.ui.pushButton.clicked.connect(self.openFileNameDialog) #按纽点击函数 BUtton要与界面中的按纽名字一致 self.ui.pushButton_2.clicked.connect(self.KT) # 卡通画功能 self.ui.comboBox.currentIndexChanged.connect(self.handleSelectionChange) global ii ii="baixi" def handleSelectionChange(self): method = self.ui.comboBox.currentText() print(method) global ii if method=='白皙': ii='baixi' elif method=='怀旧': ii = 'huaijiu' elif method == '年代': ii = 'niandai' elif method == '咖啡': ii = 'kafei' elif method == '浪漫': ii = 'langman' elif method == '青葱': ii = 'qingcong' elif method == '想象': ii = 'xiangxiang' elif method == '梦幻': ii = 'menghuan' elif method == '浪漫': ii = 'langman' elif method == '字云': ii = 'ziyun' elif method == '素描': ii = 'sumiao' elif method == '剪纸': ii = 'jianzhi' elif method == '琉璃': ii = 'liuli' elif method == '皮革': ii = 'pige' elif method == '羊皮纸': ii = 'yangpizhi' elif method == '油画': ii = 'youhua' elif method == '豹纹': ii = 'baowen' elif method == '海洋': ii = 'haiyang' elif method == '金属': ii = 'jinshu' elif method == '香槟': ii = 'xiangbin' elif method == '大爆炸': ii = 'dabaozha' elif method == '星空': ii = 'xingkong' elif method == '牛仔': ii = 'niuzai' elif method == '星轨': ii = 'xinggui' elif method == '渲染': ii = 'xuanran' elif method == '意识流': ii = 'yishiliu' print(ii) def openFileNameDialog(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getOpenFileName(self.ui, "QFileDialog.getOpenFileName()", "", "All Files (*);;Python Files (*.py)", options=options) #self后面要加.ui不然出现错误 print(fileName) self.ui.label.setText(fileName) 句柄 = self.ui.label_2.winId() print('我的句柄是'+str(句柄)) pixmap = QtGui.QPixmap(fileName) self.ui.label_2.setPixmap(pixmap) self.ui.label_2.setScaledContents(True) #图片自适应 def KT(self): app_key = '你的app key' app_secret = '你的app secret' timestamp = int(round(time.time() * 1000)) # 时间戳 i = generate_token(timestamp, app_key, app_secret) # Token with open(self.ui.label.text(), 'rb')as f: base64data = base64.b64encode(f.read()) s = base64data.decode() # print(s) params = { "imageBase64": s, # 本地图片 base64值 "appKey": "你的app key", "timestamp": timestamp, "needFilter": "true", "filterName": ii } params1 = json.dumps(params) print(timestamp) headers = { 'Content-Type': 'application/json', 'Token': i, 'cache-control': 'no-cache' } response = requests.post('https://ai.minivision.cn/apiagw/api/v1/cartoon/self_cartoon', headers=headers, data=params1).text response = json.loads(response) print(response) imagedata = base64.b64decode(response.get('data').get('base64')) with open('abc.jpg', 'wb')as f: # 保存为abc.jpg f.write(imagedata) 句柄 = self.ui.label_3.winId() print('我的句柄是'+str(句柄)) pixmap = QtGui.QPixmap('abc.jpg') self.ui.label_3.setPixmap(pixmap) self.ui.label_3.setScaledContents(True) #图片自适应 def generate_token(timestamp, app_key, app_secret): text_array = [app_key, '{', app_secret, ':', str(timestamp), '}'] text = ''.join(text_array) print(text) m = hashlib.md5(text.encode('utf-8')) return m.hexdigest() if "__main__" == __name__: app = QApplication([]) Stats = Stats() Stats.ui.show() app.exec_()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3