新年福利來(lái)一波之Python輕松集齊五福(demo)
新的一年又要到來(lái)了,各個(gè)大的公司又在這年末為大家送上了新春的祝福,支付寶還是延續(xù)了這幾年的傳統(tǒng),在年末為大家送上了集五福的活動(dòng),為了大家能更快更好的掃出來(lái)大大的“?!保裉炀蛶ьI(lǐng)大家利用python做一個(gè)一“?!鞭D(zhuǎn)“N”福的小demo。
先看效果圖
首先,我們需要拿到一張大大的“?!弊謭D片,然后,我們就可以對(duì)于這張圖進(jìn)行操作了。我們今天要實(shí)現(xiàn)的就是將一張“福”字轉(zhuǎn)化為五種不同的風(fēng)格,現(xiàn)為大家呈上效果圖。
灰度圖
首先為大家展示的是灰度圖,灰度圖就是將彩色的RGB三通道圖像,轉(zhuǎn)化為單通道的灰色圖像,RGB三個(gè)通道的顏色通過(guò)比例系數(shù)進(jìn)行相加。程序如下所示。
def Gray_fu(self): gray_img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY) return gray_img
輪廓圖
接下來(lái)是輪廓圖,輪廓圖需要輸入一張灰度圖像,首先是對(duì)圖像進(jìn)行濾波處理,去除噪聲,然后針對(duì)于灰色的圖片中像素突然變化的點(diǎn)來(lái)檢測(cè)邊緣,什么是邊緣突然變化呢,參考我們的灰度圖,灰度圖中,“?!弊值倪吘壨尘邦伾霈F(xiàn)了巨大的差異,這種差異就是尋找邊緣輪廓的依據(jù),程序如下圖所示。
def Canny_fn(self): img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY) img = cv2.GaussianBlur(img, (3, 3), 0) canny_img = cv2.Canny(img, 50, 150) return canny_img
反色圖
對(duì)于反色圖,理解起來(lái)并不難,就是用255減去將原圖中的每一個(gè)像素值,得到的就是我們的反色圖,程序如下:
def invert_fu(self): img = 255 - self.ori_img return img
腐蝕圖
對(duì)于腐蝕圖,因?yàn)樵谖覀冞x取的圖像中,紅色是背景,黑色才是福字,所以對(duì)紅色進(jìn)行膨脹也就是對(duì)黑色進(jìn)行腐蝕。這也是 OpenCV 的內(nèi)置功能。我們只需要調(diào)用opencv中的膨脹函數(shù)即可。
def dilate_fu(self): # img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY) kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) img = cv2.dilate(self.ori_img, kernel, iterations=1) print(img.shape) return img
福到家
最后是我們的“福到家”,我們只需要將福字進(jìn)行旋轉(zhuǎn)即可。
def rotate_fu(self): img = cv2.rotate(self.ori_img, 1) return img
完整代碼
import cv2 class Change_pic(): def __init__(self, img): self.ori_img = cv2.imread(img) def Gray_fu(self): '''灰度圖''' gray_img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY) return gray_img def Canny_fn(self): '''輪廓圖''' img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY) img = cv2.GaussianBlur(img, (3, 3), 0) canny_img = cv2.Canny(img, 50, 150) return canny_img def invert_fu(self): '''反色圖''' img = 255 - self.ori_img return img def dilate_fu(self): '''腐蝕圖''' # img = cv2.cvtColor(self.ori_img, cv2.COLOR_BGR2GRAY) kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) img = cv2.dilate(self.ori_img, kernel, iterations=1) print(img.shape) return img def rotate_fu(self): '''福到家''' img = cv2.rotate(self.ori_img, 1) return img
總結(jié)
以上所述是小編給大家介紹的新年福利來(lái)一波之Python輕松集齊五福,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
人工智能——K-Means聚類(lèi)算法及Python實(shí)現(xiàn)
這篇文章主要介紹了人工智能——K-Means聚類(lèi)算法及Python實(shí)現(xiàn),一個(gè)能夠找到我圈出的這?些點(diǎn)集的算法,就被稱(chēng)為聚類(lèi)算法,下面就來(lái)看看文章具體的介紹吧2022-01-01tensorflow 使用flags定義命令行參數(shù)的方法
本篇文章主要介紹了tensorflow 使用flags定義命令行參數(shù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python實(shí)現(xiàn)微信小程序用戶登錄、模板推送
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)微信小程序用戶登錄、模板推送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08使用Django和Postgres進(jìn)行全文搜索的實(shí)例代碼
這篇文章主要介紹了使用Django和Postgres進(jìn)行全文搜索,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02使用Python實(shí)現(xiàn)Wake On Lan遠(yuǎn)程開(kāi)機(jī)功能
這篇文章主要介紹了使用Python實(shí)現(xiàn)Wake On Lan遠(yuǎn)程開(kāi)機(jī)功能,文中給大家補(bǔ)充介紹了python通過(guò)wakeonlan喚醒內(nèi)網(wǎng)電腦開(kāi)機(jī),非常不錯(cuò),感興趣的朋友跟隨小編一起學(xué)習(xí)吧2020-01-01Python連接打印機(jī)實(shí)現(xiàn)自動(dòng)化打印的實(shí)用技巧和示例代碼
在計(jì)算機(jī)科學(xué)領(lǐng)域,打印機(jī)是一種重要的外部設(shè)備,用于將電子文檔轉(zhuǎn)換成實(shí)際的紙質(zhì)文件,下面這篇文章主要給大家介紹了關(guān)于Python連接打印機(jī)實(shí)現(xiàn)自動(dòng)化打印的實(shí)用技巧和示例代碼,需要的朋友可以參考下2024-05-05基于python實(shí)現(xiàn)語(yǔ)音錄入識(shí)別代碼實(shí)例
這篇文章主要介紹了如何通過(guò)python實(shí)現(xiàn)語(yǔ)音錄入識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01