python opencv實現(xiàn)證件照換底功能
本文實例為大家分享了python opencv實現(xiàn)證件照換底功能的具體代碼,供大家參考,具體內(nèi)容如下
思路:先轉(zhuǎn)到HSV空間,利用顏色提取背景制作掩模版mask,然后通過按位操作提取人像和制作新背景,最后疊加背景和人像得到換底后照片
代碼
#-*-coding:utf-8-*- import cv2 import numpy as np def cvtBackground(path,color): """ 功能:給證件照更換背景色(常用背景色紅、白、藍) 輸入?yún)?shù):path:照片路徑 color:背景色 <格式[B,G,R]> """ im=cv2.imread(path) im_hsv=cv2.cvtColor(im,cv2.COLOR_BGR2HSV) aim=np.uint8([[im[0,0,:]]]) hsv_aim=cv2.cvtColor(aim,cv2.COLOR_BGR2HSV) mask=cv2.inRange(im_hsv,np.array([hsv_aim[0,0,0]-5,100,100]),np.array([hsv_aim[0,0,0]+5,255,255])) mask_inv=cv2.bitwise_not(mask) img1=cv2.bitwise_and(im,im,mask=mask_inv) bg=im.copy() rows,cols,channels=im.shape bg[:rows,:cols,:]=color img2=cv2.bitwise_and(bg,bg,mask=mask) img=cv2.add(img1,img2) image={'im':im,'im_hsv':im_hsv,'mask':mask,'img':img} for key in image: cv2.namedWindow(key) cv2.imshow(key,image[key]) cv2.waitKey(0) return img #test if __name__=='__main__': img=cvtBackground('./photo.jpg',[0,0,180])
結(jié)果
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
用Python爬取LOL所有的英雄信息以及英雄皮膚的示例代碼
這篇文章主要介紹了用Python爬取LOL所有的英雄信息以及英雄皮膚的示例代碼,主要分為兩部分,獲取網(wǎng)頁上數(shù)據(jù)和圖片保存到本地等,感興趣的可以了解一下2020-07-07特征臉(Eigenface)理論基礎(chǔ)之PCA主成分分析法
這篇文章主要為大家詳細介紹了特征臉理論基礎(chǔ)之PCA主成分分析法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03python解析中國天氣網(wǎng)的天氣數(shù)據(jù)
最近學(xué)習(xí)python 感覺這門腳本語言十分靈活 而且功能十分強大 尤其是他re庫用于正則匹配十分強大,寫了個例子解析中國天氣網(wǎng)2014-03-03pandas按若干個列的組合條件篩選數(shù)據(jù)的方法
下面小編就為大家分享一篇pandas按若干個列的組合條件篩選數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python?matplotlib繪圖時指定圖像大小及放大圖像詳解
Matplotlib是一個面向?qū)ο蟮睦L圖庫,我們繪制的圖像中,每條曲線,每個邊框等等都對應(yīng)一個對象,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib繪圖時指定圖像大小及放大圖像的相關(guān)資料,需要的朋友可以參考下2022-05-05python使用代理IP爬取貓眼電影專業(yè)評分數(shù)據(jù)
在編寫爬蟲程序的過程中,IP封鎖無疑是一個常見且棘手的問題,盡管網(wǎng)絡(luò)上存在大量的免費IP代理網(wǎng)站,但其質(zhì)量往往參差不齊,令人堪憂,本篇文章中介紹一下如何使用Python的Requests庫和BeautifulSoup庫來抓取貓眼電影網(wǎng)站上的專業(yè)評分數(shù)據(jù),需要的朋友可以參考下2024-03-03