下午被一个骗子恶心到了,本来听公开课听得好好的,搞得心情极差,于是就中断了网课,听听音乐,写一下文章吧!
前期准备
①Python编译环境以及Python代码编辑器Pycharm的安装:请在【微信公众后台】找到【windows】下的软件目录去寻找!
②pip换成国内镜像源,请自行百度!
③【cmd】窗口或者是Pycharm的【terminal】输入:
pip install opencv-python
④更多项目:请star【github仓库】:
https://github.com/lures2019/lures2020-demos
实际效果演示:
在网上随便找的两张图片:
【美颜前照片】
看起来,有点……
其实,两位小姐姐美颜后还是可以的……(广大朋友们以后找对象就不要看照片了吧~~~~)
【美颜后照片】
设置的美颜程度是40,搞成100的话有点虚…………
不管怎么说,美颜后看起来比美颜前好看多了~~~
【实际演示】
实际演示中注意的问题:
既可以是绝对路径,eg:C:/Users/HP/Desktop/queban.jpg
也可以是放到软件所在的目录,直接输入图片名称
①图片保存最好是【英文形式的】,中文可能有bug
②无法解析在线的图片地址
③封装的时候我遇到了bug,我没法解决!
源代码:
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库:
大家,看到了代码就知道了:主要是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()
这时候,就会有一个窗口加载图片:
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()
总结
opencv是一个很强大的库,支持多个编程语言!大家有兴趣的可以试一试!