下午被一個騙子惡心到了,本來聽公開課聽得好好的,搞得心情極差,于是就中斷了網課,聽聽音樂,寫一下文章吧!
前期準備

①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是一個很強大的庫,支持多個編程語言!大家有興趣的可以試一試!
