本文實例為大家分享了python實現摳圖給證件照換背景的具體代碼,供大家參考,具體內容如下
import cv2
import numpy as np
import matplotlib.pyplot as plt
#建立顯示圖片的函數
def show(image):
plt.imshow(image)
plt.axis('off')
plt.show()
#導入前景圖
img=cv2.imread('font.jpg') #圖片導入
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #轉換顏色模型
print(img.shape) #打印圖片規格
show(img) #顯示圖片
#導入背景圖
back_img = cv2.imread('back.jpg') #圖片導入
back_img = cv2.cvtColor(back_img,cv2.COLOR_BGR2RGB) #轉換顏色模型
print(back_img.shape) #打印圖片規格
show(back_img) #顯示圖片
#裁剪圖片
#img = img[0:1000,150:550] #裁剪圖片大小
#show(img) #顯示圖片
#縮放圖片
#print(img.shape) #打印圖片規格
#img=cv2.resize(img,None,fx=0.9,fy=0.9) #圖片縮小10%
#print(img.shape) #打印圖片規格
#拆分圖片信息
rows,cols,channels = img.shape #拆分圖片信息
#轉換格式
img_hsv = cv2.cvtColor(img,cv2.COLOR_RGB2HSV) #把圖片轉換成HSV格式,用于摳圖
show(img_hsv) #顯示圖片
#摳圖
lower_blue=np.array([0,0,0]) #獲取最小閾值
upper_blue=np.array([0,255,255]) #獲取最大閾值
mask = cv2.inRange(img_hsv, lower_blue, upper_blue) #創建遮罩
show(mask) #顯示遮罩
erode=cv2.erode(mask,None,iterations=3) #圖像腐蝕
show(erode) #顯示圖片
dilate=cv2.dilate(erode,None,iterations=1) #圖像膨脹
show(dilate) #顯示圖片
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (8,8))) #開運算
show(opening) #顯示圖片
center = [400,800] #設置前景圖開始位置
for i in range(rows):
for j in range(cols):
if opening[i,j]==0: #代表黑色
back_img[center[0]+i,center[1]+j] =img[i,j] #賦值顏色
show(back_img) #顯示圖片
back_img = cv2.cvtColor(back_img,cv2.COLOR_RGB2BGR) #圖像格式轉換
back_img=cv2.resize(back_img,None,fx=0.8,fy=0.8) #圖像縮放20%
cv2.imwrite('result.png',back_img) #保存圖像
完整源碼:python實現摳圖給證件照換背景源碼
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

