python软件_Python自制照片美颜软件~

fc80a9e005793641272dd72362a51a17.png

下午被一个骗子恶心到了,本来听公开课听得好好的,搞得心情极差,于是就中断了网课,听听音乐,写一下文章吧!

前期准备

9273aa7509dc4495486e6edbae594df7.png

①Python编译环境以及Python代码编辑器Pycharm的安装:请在【微信公众后台】找到【windows】下的软件目录去寻找!

②pip换成国内镜像源,请自行百度!

③【cmd】窗口或者是Pycharm的【terminal】输入:

pip install opencv-python

④更多项目:请star【github仓库】:

https://github.com/lures2019/lures2020-demos

实际效果演示:

9273aa7509dc4495486e6edbae594df7.png

在网上随便找的两张图片:

705cb4b22514709f016bcf9234117f79.png

【美颜前照片】

看起来,有点……

其实,两位小姐姐美颜后还是可以的……(广大朋友们以后找对象就不要看照片了吧~~~~)

5374473dcdc20a3b08a6a995ba030457.png

【美颜后照片】

设置的美颜程度是40,搞成100的话有点虚…………

不管怎么说,美颜后看起来比美颜前好看多了~~~

【实际演示】

实际演示中注意的问题:

既可以是绝对路径,eg:C:/Users/HP/Desktop/queban.jpg

也可以是放到软件所在的目录,直接输入图片名称

①图片保存最好是【英文形式的】,中文可能有bug

②无法解析在线的图片地址

③封装的时候我遇到了bug,我没法解决!

源代码:

9273aa7509dc4495486e6edbae594df7.png
from tkinter import *import cv2          # pip install opencv-pythonfrom tkinter import messageboximport osdef fix_photo():    content = entry.get()    con = content.strip()    name = con.split(r'.')[0].split(r'/')[-1]    if con == "":        messagebox.showinfo("提示","请输入正确的照片的路径!")    else:       try:           image = cv2.imread(con)           value = 40           # value是美颜程度,值越大程度越大,值越小程度越小           image_dst = cv2.bilateralFilter(image, value, value * 2, value / 2)           # 把美颜后的效果生成一张照片           path = 'photos_after_beauty'           if not os.path.exists(path):               os.mkdir(path)           cv2.imwrite(path + '/' + "%s.jpg" % (name), image_dst)           messagebox.showinfo("提示", "图片已经美颜成功!")       except EXCEPTION as error:           pass       # 自动清空输入框内容       entry.delete(0,END)window = Tk()window.title("Python美颜工具1.0")window.geometry("300x100+200+200")window.resizable(0,0)label = Label(window,text="图片地址:",font=("仿宋",12))label.grid(row=0,column=0)entry = Entry(window,width="28")# entry不能和grid连写,否则会报错entry.grid(row=0,column=1)label2 = Label(window,text="").grid(row=1,column=0)label3 = Label(window,text="").grid(row=2,column=0)button1 = Button(window,text="开始美颜",font=("仿宋",12),command=fix_photo)button1.grid(row=3,column=0)button2 = Button(window,text="退出软件",font=("仿宋",12),command=window.quit)button2.grid(row=3,column=1,sticky="e")window.mainloop()

简单介绍一下cv2库:

9273aa7509dc4495486e6edbae594df7.png

大家,看到了代码就知道了:主要是tkinter和cv2库

tkinter我就不介绍了,前面几个项目都已经用过了!

主要是来说一下opencv for Python中的cv2库吧!

opencv在Python中主要是图像处理和机器学习方面,功能强大!

这边我就简单说一下cv2的加载图片+图片模糊+图片美颜!

1)加载图片:

import cv2          # pip install opencv-python# 1、加载一张目标图片image = cv2.imread("qingchundou.jpeg")# 2、创建一个窗口,用来展示图片cv2.namedWindow("window")# 3、定义一个函数:实时鼠标状态的点击def draw(event,x,y,flags,param):    if event == cv2.EVENT_LBUTTONDOWN:        print('鼠标->按下')    elif event == cv2.EVENT_MOUSEMOVE:        print('鼠标->滑动')    elif event == cv2.EVENT_LBUTTONUP:        print('鼠标->抬起')# 4、监听鼠标事件的回调cv2.setMouseCallback('window',draw)# 5、展示窗口cv2.imshow('window',image)# bug闪退,窗口无线等待,等着用户来操作cv2.waitKey()# 6、销毁窗口,优化cv2.destroyAllWindows()

这时候,就会有一个窗口加载图片:

edec33995d6b6c45a9a6428227d375d6.png

2)图片模糊处理:

import cv2          # pip install opencv-pythonimage = cv2.imread('qingchundou.jpeg')# 图片模糊,第一个参数:模糊的对象,第二个参数:模糊程度的大小,值越大,程度越大image_dst = cv2.blur(image,(15,15))cv2.namedWindow("window")cv2.imshow('window',image_dst)cv2.waitKey()cv2.destroyAllWindows()

ba57920615cfe2dc8cf617c7c899d8ca.png

总结

9273aa7509dc4495486e6edbae594df7.png

opencv是一个很强大的库,支持多个编程语言!大家有兴趣的可以试一试!

ca45b43ce9ebbf829131abfb6f8c8589.png

原创不易

点亮在看,拜谢!

7508cbae037da6183ed09066c73c1986.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据集怎么导出_PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击...

今天是机器学习专题的第27文章,我们一起来聊聊数据处理领域的降维(dimensionality reduction)算法。我们都知道,图片格式当中有一种叫做svg,这种格式的图片无论我们将它放大多少倍,也不会失真更不会出现边缘模糊的情况。原因也很简…

html form callback,Promise异步编程模式总结初始化Promise对象统一错误处理PromisifyfromCallbackMongoose Promisify...

Promise是JavaScript中的一种异步编程范式, 一个Promise对象表示一个即将完成但还未完成的操作。 鉴于JavaScript中异步和回调的编程风格, Promise模式可以有效地避免『Callback Hell』。Promise 最初有q和bluebird等实现,在ES2015(ES6)提出后…

常用命令_GIT常用命令大全

Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。克隆远程文件:git clone https://gitee.com/abcd/codefile.git projectgit checkout -b dev(本地分支名称) origin/dev(远程分支名称…

nvidia显示设置不可用_Nvidia显示设置不可用,您当前未使用连接到NVIDIA GPU的显示器的解决方法...

相信不少用户遇到这样一个问题,就是新购买的台式机电脑,配置达标的情况下,玩游戏出现卡顿不流畅的现象,准备在NVIDIA控制面板查看是否设置的问题,在打开NVIDIA控制面板的时候,提示了“Nvidia显示设置不可用…

html的id不能有.吗,html – 哪些DOM元素不能接受id?

在HTML5中,id属性是global attribute,可以在任何元素上指定.如果你看看Document Type Declaration for HTML4,你可以找到没有%attrs的元素;在他们的属性列表中定义,表示它们不支持id属性.那些包括在“文档头”部分的底部附近:HEAD,TITLE,BASE,META,STYLE…

oracle tns 代理配置_Toad for oracle安装配置与使用

一.toad安装与配置注意:toad的使用本机电脑必须安装完整版oracle客户端,不能是精简版的.1.1完整版oracle客户端的安装.1.解压文件,安装oracle客户端打开安装包,找到setup.ext,开始安装。提示下图弹窗,可根据此网址内容进行更改(https://blog.…

吴枫 python小课账号_无门槛速学编程——Python小短课,自上而下分而治之

【Python小短课 11】自上而下,分而治之 做任何事都需计划,编程也是。 譬如写文章要列大纲、作画要想布局,编程也需先谋全局,而后思虑细节。 就以上回说到的“找宝藏”这个程序举例,最顶层的需求自然就是“找宝藏”&…

计算机本地磁盘D无法扩展,计算机上的本地磁盘D突然无法打开,表明它需要格式化...

接受使用数据恢复软件将重要数据保存到其他磁盘FindDate特定操作: 运行软件----“打开”后,将显示要还原的驱动器. C \ D \ E \ F选择您要还原的一个,它将开始. 扫描后,再次保存扫描的文件. 哈哈,希望对您有所帮助.最后&#xff0…

caffe运行不停止_caffe(gpu)安装过程及问题解决

2019.12.05 caffe(gpu)安装参考网址:教程1:weiliu89/caffe​github.com教程2:https://blog.csdn.net/yggaoeecs/article/details/79163789​blog.csdn.net环境:Ubuntu16.04cuda10.0安装过程:git clone https://github.…

2021年考计算机考研三战,2021考研的小伙伴有3条忠告一定要记得,这些都是历年实战经验...

2021考研的小伙伴有3条忠告一定要记得,这些都是历年实战经验,考研一定要记得避开三个大坑。1,分数线低的学校就一定容易考。有一些学校分数线看着很低但实际上难度不低,比如首都师范大学 ,很多专业就是国家线录取甚至招…

c++ 返回string_JVM系列之:String.intern和stringTable

简介StringTable是什么?它和String.intern有什么关系呢?在字符串对象的创建过程中,StringTable有起到了什么作用呢?一切的答案都在本文中,快来看看吧。intern简介intern是String类中的一个native方法,所以它…

conda install 换源_ubuntu更换pip install,apt-get,conda install 成国内源

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe mu…

python帮助文档中查看内置函数_PYTHON官方文档内置函数整理

一、数学运算类 abs(x) 求绝对值 1 、参数可以是整型,也可以是复数 2 、若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商和余数 注意:整型、浮点型都可以 float([x]) 将一个字符串或数转换为浮点数…

计算机二级指针,C语言——二级指针

二级指针的概念首先任何值都有地址,一级指针的值虽然是地址,但这个地址做为一个值亦需要空间来存放,是空间就具有地址,这就是存放地址这一值的空间所具有的地址,二级指针就是为了获取这个地址,一级指针所关…

华为 虚拟键盘_华为mate30 pro虚拟机械键盘特有体验,虽是虚拟,但却感受逼真...

华为Mate30 pro已于26日在国内正式发布了。此外,根据了解华为Mate30系列现在已经突破了5亿的销售额。看来,华为的这个下半年旗舰手机非常受欢迎啊。华为Mate30系列现在在国内已经发布了,其整体感官看上去与海外的没有多大的区别。其实&#x…

python 如何快速判断列表是否相同_Python-检查列表中的所有元素是否相同

小编典典 通用方法: def checkEqual1(iterator): iterator iter(iterator) try: first next(iterator) except StopIteration: return True return all(first rest for rest in iterator) 单线: def checkEqual2(iterator): return len(set(iterator)…

计算机有什么著名基金经理排名,百万年薪的基金经理,都是什么专业出身?!...

有人会说了“小哔君你四不四撒!基金经理肯定是金融专业出身的咯?不然嘞?”但事实的真相是许多基金经理都并非科班出身这要从基金经理的晋升机制说起了!如下图基金经理都是从研究员做起的!那么问题来了,如何…

遍历children_589. N叉树的前序遍历

589. N叉树的前序遍历给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。说明: 递归法很简单,你可以使用迭代法完成此题吗?题解:既然是树的遍历,那么一共就是两种思路&a…

计算机护理职称考试报名时间2015,护理职称考试怎么报名?

护理职称考试报名流程:网上预报名-现场确认-报名缴费。护理职称考试网上预报名及网上缴费均在中国卫生人才网,护理职称考试报名现场确认则按属地原则在单位或户籍所在地的卫计局。护理职称考试报名流程详解一、网上预报名考生需在规定的时间内登录中国卫…

怎么用python编程前二n-1项的等差数列的和_python 等差数列末项计算方式

等差数列末项计算 题目内容: 给出一个等差数列的前两项a1,a2,求第n项是多少 可以使用以下语句实现非负整数n的输入: nint(input()) 输入格式: 三行,包含三个整数a1,a2,n 输出格式: 一…