使用python半分鐘輕松完成證件照換底色
導(dǎo)語(yǔ)
小伙伴們都知道,剛?cè)肼毜臅r(shí)候都是要求新人入職帶著自己的證件照的,這應(yīng)該是幾寸的來(lái)著,小編入職這么久都忘記了?。。?/p>
昨天下班之后跟之前的老朋友聚餐,其實(shí)一個(gè)兄弟的跟我說(shuō):“老表,你現(xiàn)在是編程的,又沒(méi)得辦法幫我一個(gè)忙?” 我這一聽(tīng):“什么事兒?你說(shuō)”
“我老婆前幾天剛?cè)肼毿鹿荆侨肼氈蟛艜缘谜掌切枰{(lán)底兒的,主要是那個(gè)照證件照的離家太遠(yuǎn)了,索性問(wèn)下你有啥辦法沒(méi)?“
那當(dāng)然,為了節(jié)省他們的時(shí)間,這小忙我義不容辭,也就幾分鐘的事兒。?
正文
環(huán)境安裝部分(1):
Python3.6;
numpy函數(shù)庫(kù);
opencv庫(kù)。
pip install numpy
pip install opencv-python
證件照的讀取與縮放比列(2):
# step1: 讀取照片img = cv2.imread(file) # step2: 縮放圖片()img = cv2.resize(img, None, fx=1.5, fy=1.5)rows, cols, channels = img.shape
三色圖片有RGB三個(gè)顏色通道,無(wú)法進(jìn)行腐蝕和膨脹的操作。
這個(gè)就需要我們將彩色圖片轉(zhuǎn)換為hsv灰度圖像后,再完成腐蝕和膨脹的操作(3):
# 展示圖片 cv2.imshow("original...", img)# step2.1 圖片轉(zhuǎn)換為灰度圖并顯示hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
將圖片進(jìn)行二值化處理(4):
紅底變藍(lán)底,將在兩個(gè)閾值內(nèi)的像素值設(shè)置為白色(255)
而不在閾值區(qū)間內(nèi)的像素值設(shè)置為黑色(0)
lower_red= np.array([0,125,125]) upper_red = np.array([255,255,255]) mask = cv2.inRange(hsv, lower_red, upper_red)
圖象的腐蝕和膨脹、遍歷每個(gè)像素點(diǎn)進(jìn)行顏色替換(5):
#step3:腐蝕膨脹 若是腐蝕膨脹后仍有白色噪點(diǎn),可以增加iterations的值 erode = cv2.erode(mask, None, iterations=5) # cv2.imshow('erode', erode)dilate = cv2.dilate(erode, None, iterations=7) # step3.1遍歷每個(gè)像素點(diǎn),進(jìn)行顏色的替換''' #若是想要將紅底變成藍(lán)底img[i,j]=(255,0,0), #若是想將藍(lán)底變?yōu)榧t底則img[i,j]=(0,0,255), #若是想變白底 img[i,j]=(255,255,255)'''for i in range(rows): for j in range(cols): if dilate[i,j] ==255: # 像素點(diǎn)255表示白色,180為灰度 img[i,j]=(255,0,0) # 此處替換顏色,為BGR通道,不是RGB通道
圖片效果:
?????
???
??
??
附源碼:
#!/usr/bin/env python # -*- coding:utf-8 -*- import cv2 import numpy as np file=r".\\pic\\小姐姐.png" # step1:讀取照片 img = cv2.imread(file) # step1.2:縮放圖片() img = cv2.resize(img, None, fx=1.5, fy=1.5) rows, cols, channels = img.shape # 展示圖片 cv2.imshow("original...", img) # step2.1 圖片轉(zhuǎn)換為灰度圖并顯示 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # :圖片的二值化處理 # 紅底變藍(lán)底 # 將在兩個(gè)閾值內(nèi)的像素值設(shè)置為白色(255), #而不在閾值區(qū)間內(nèi)的像素值設(shè)置為黑色(0) # lower_red= np.array([0,125,125]) upper_red = np.array([255,255,255]) mask = cv2.inRange(hsv, lower_red, upper_red) #step2.3:腐蝕膨脹 若是腐蝕膨脹后仍有白色噪點(diǎn),可以增加iterations的值 erode = cv2.erode(mask, None, iterations=5) # cv2.imshow('erode', erode) dilate = cv2.dilate(erode, None, iterations=7) # step3遍歷每個(gè)像素點(diǎn),進(jìn)行顏色的替換 ''' #若是想要將紅底變成藍(lán)底img[i,j]=(255,0,0), #若是想將藍(lán)底變?yōu)榧t底則img[i,j]=(0,0,255), #若是想變白底img[i,j]=(255,255,255) ''' for i in range(rows): for j in range(cols): if dilate[i,j] ==255: # 像素點(diǎn)255表示白色,180為灰度 img[i,j]=(255,0,0) # 此處替換顏色,為BGR通道,不是RGB通道 #step4 顯示圖像 new_file=r".\\pic\\小姐姐_blue.png" cv2.imwrite(new_file, img) res = cv2.imread(new_file) cv2.imshow('result...', res) # 窗口等待的命令,0表示無(wú)限等待 cv2.waitKey(0)
安啦!換證件照的小程序就寫(xiě)好了。換上自己的圖片試試叭??!
以上就是使用python半分鐘輕松完成證件照換底色的詳細(xì)內(nèi)容,更多關(guān)于python完成證件照換底色的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用python簡(jiǎn)單實(shí)現(xiàn)mysql數(shù)據(jù)同步到ElasticSearch的教程
今天小編就為大家分享一篇用python簡(jiǎn)單實(shí)現(xiàn)mysql數(shù)據(jù)同步到ElasticSearch的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05基于python實(shí)現(xiàn)銀行管理系統(tǒng)
這篇文章主要介紹了基于python實(shí)現(xiàn)銀行管理系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python項(xiàng)目制作的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04利用scrapy將爬到的數(shù)據(jù)保存到mysql(防止重復(fù))
這篇文章主要給大家介紹了關(guān)于利用scrapy將爬到的數(shù)據(jù)保存到mysql(防止重復(fù))的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2018-03-03Python制作數(shù)據(jù)導(dǎo)入導(dǎo)出工具
正好最近在學(xué)習(xí)python,于是打算用python實(shí)現(xiàn)了數(shù)據(jù)導(dǎo)入導(dǎo)出工具,由于是新手,所以寫(xiě)的有些不完善的地方還請(qǐng)見(jiàn)諒2015-07-07Python3中多線程編程的隊(duì)列運(yùn)作示例
這篇文章主要介紹了Python3中多線程編程的隊(duì)列運(yùn)作示例,文中用一個(gè)簡(jiǎn)單的例子展示了Python下嘗試多線程時(shí)隊(duì)列的進(jìn)站出站是如何運(yùn)作的,需要的朋友可以參考下2015-04-04python自動(dòng)化測(cè)試用例全對(duì)偶組合與全覆蓋組合比較
這篇文章主要為大家介紹了python自動(dòng)化測(cè)試用例全對(duì)偶組合與全覆蓋組合比較,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Django中使用CORS實(shí)現(xiàn)跨域請(qǐng)求過(guò)程解析
這篇文章主要介紹了Django中使用CORS實(shí)現(xiàn)跨域請(qǐng)求過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08