來源:Python 技術(shù)「ID: pythonall」
今天上班時(shí),我正在敲代碼。女朋友突然發(fā)了一張圖片給我:
“老公,我也想要一個(gè)這樣的頭像...”
后面跟著一個(gè)可憐的表情。
無奈,不管怎樣我只好應(yīng)承下來。
下班回到家中,我準(zhǔn)備把這個(gè)任務(wù)完成了。其實(shí)完全可以找個(gè)美顏的 APP ,上傳圖片,點(diǎn)幾下就好了。但是作為她心目中的技術(shù)大神,我肯定不能這么干,不然干嘛要讓我來做這件事情(要深刻理解女生的目的)。
我略加思索,感覺這件事情用 Python 來實(shí)現(xiàn)并不困難。
實(shí)現(xiàn)需要用到的工具是 OpenCV 庫,用 OpenCV 庫里面的圖片處理接口就能滿足需求。
安裝方法還是我們的老一套:
pip install opencv-python
我從手機(jī)相冊中找了一張照片,發(fā)送到微信,然后保存到電腦上。
我們代碼的第一步就是要讀取這張圖片。
import cv2
img = cv2.imread('mv5.jpg')
我們讀取的是 RGB 格式的圖片。接著,我們將這張圖片轉(zhuǎn)換為灰度圖片。
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
轉(zhuǎn)換之后,圖片是這樣子的:
接下來,我們要將灰度圖像反轉(zhuǎn),以便于增強(qiáng)圖像的細(xì)節(jié)。
inverted_image = 255 - gray_image
反轉(zhuǎn)之后,我們得到的圖片是這樣的:
看起來是不是有點(diǎn)恐怖?
最后,我們將反轉(zhuǎn)的圖像進(jìn)行模糊處理,然后再將模糊的圖像倒置,最后將灰度圖像除以倒置的模糊圖像,就可以創(chuàng)建鉛筆草圖了。
blurred = cv2.GaussianBlur(inverted_img, (21, 21), 0)
inverted_blurred = 255 - blurred
pencil_sketch = cv2.divide(gray_img, inverted_blurred, scale=256.0)
我們使用 OpenCV 顯示一下:
cv2.imshow('original', img)
cv2.imshow('pencil', pencil_sketch)
cv2.waitKey(0)
最后輸出的圖像是這樣子的:
別看我寫了這么幾個(gè)步驟,實(shí)際上代碼也就幾行而已。下次妹子問你能不能給她做素描圖像,千萬別甩一句:用美圖秀秀??!不然你會(huì)失去一個(gè)妹子的!
PS:公號內(nèi)回復(fù)「Python」即可進(jìn)入Python 新手學(xué)習(xí)交流群,一起 100 天計(jì)劃!