首頁 > 軟體

Python Opencv實現最強美顏濾鏡效果

2022-03-25 13:01:37

前言

繼老乾媽、辣條之後,中國美顏軟體在海外一夜成名,把所有人都幻化成了粉紅小甜心。

人類學者克里斯特爾·阿比丁博士認為,這是一種亞洲風情的文化擴散。

哈嘍!哈嘍,我是木子!

“亞洲四大邪術”之一的中國美顏術絕非浪得虛名——

根據小編的第八定律,99% 的人拍了照在發朋友圈之前,都會給自己P一P。

並且都信奉著一個真理:美顏過後的自己,才是真正的自己。​

最初,大家修改的範圍也僅僅是磨個皮,讓自己白兩度。

但這終究無法滿足,他們日漸增長的對美的渴望。​

於是,瘦臉+大眼又成了必備步驟。於是越來越多的專案都成為了大家的必備........

還有少數天選之人,將各類技術融會貫通,修容之技出神入化。我們通常稱他們為——百萬P圖大神。這些人的作品膜拜就好,至於怎麼 P 的,咱也不知道,咱也不敢問。

今天小編就來寫一版Python程式碼美顏給大家!

環境安裝

本文是由Opencv寫的小程式。

涉及執行環境:Python3.7、Pycharm社群版、opencv模組。

pip install +模組名 或pip install -i https://pypi.douban.com/simple/ opencv-python

效果展示

第一組隨機

原圖——

效果圖——

看起來,有點……

其實,兩位小姐姐美顏後還是可以的……

(廣大朋友們以後找物件就不要看照片了吧網戀也需要謹慎啊)

設定的美顏程度是40,搞成100的話有點虛…………

不管怎麼說,美顏後看起來比美顏前好看多了~~~

第二組隨機

這小姐姐顏值還是挺高的哈,美顏前後也就差不多~

原始碼展示

from tkinter import *
import cv2          # pip install opencv-python
from tkinter import messagebox
import os


def 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的載入圖片+圖片模糊!

載入圖片:

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()

這時候,就會有一個視窗載入圖片。

圖片模糊處理:

import cv2          # pip install opencv-python
image = cv2.imread('qingchundou.jpeg')
# 圖片模糊,第一個引數:模糊的物件,第二個引數:模糊程度的大小,值越大,程度越大
image_dst = cv2.blur(image,(15,15))
cv2.namedWindow("window")
cv2.imshow('window',image_dst)
cv2.waitKey()
cv2.destroyAllWindows()

總結

opencv是一個很強大的庫,支援多個程式語言!大家有興趣的可以試一試!

以上就是Python Opencv實現最強美顏濾鏡效果的詳細內容,更多關於Python Opencv濾鏡的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com