分割出背景區域的掩膜(將影象轉成hsv格式,通過cv2.inrange()選出特定顏色區域的背景)
背景區域的掩膜:背景是白色,頭像部分是黑色的
對背景區域的掩膜取反,得到反掩膜(外黑裡白)
畫出與證件照相同大小的背景
新背景:新背景與掩膜按位與
分割頭像區域。反掩膜與原圖按位與
cv2.inrange(hsv,lower_range,upper_range)
將畫素值為lower_range,upper_range
之間的畫素點置為255,其餘的置為0.
引數有三個
第乙個引數:hsv
指的是原圖
第二個引數:lower_range
指的是影象中低於這個lower_range
的值,影象值變為0
第三個引數:upper_range
指的是影象中高於這個upper_range
的值,影象值變為0
# coding:utf-8
'''證件照換背景
)# 影象路徑
hsv = cv2.cvtcolor(img,cv2.color_bgr2hsv)
h,s,v = cv2.split(hsv)
# lowerblue = np.array([100, 100, 50])
## upperblue = np.array([130, 255, 255])
lowerblue = np.array([20
,120
,100])
#bgr
upperblue = np.array(
[130
,255
,200])
mask = cv2.inrange(hsv, lowerblue, upperblue)
# 背景是白,頭像是黑
mask_not = cv2.bitwise_not(mask)
# 外黑裡白
# 畫出藍色背景
print
(img.shape)
blank = np.zeros(img.shape,dtype = np.uint8)
color =
(218
,143,3
)# bgr
# color = (255,0,0)
background = cv2.rectangle(blank,(0
,0),
(425
,602
),color = color,thickness=-1
)# 全藍矩形背景
background = cv2.bitwise_and(background,background,mask=mask)
# 得到藍色背景,空出頭像部分
# 摳出頭像
head = cv2.bitwise_and(img,img,mask=mask_not)
# 頭像是原圖,背景是黑
# 合併
combination = cv2.bitwise_or(background,head)
# cv2.imshow('background',background)
# cv2.imshow('head',head)
# cv2.imshow('shu',combination)
cv2.imwrite(
'./shu.jpeg'
,combination)
# cv2.imshow('shu',mask)
# k = cv2.waitkey(0) # 無限等待乙個鍵擊,將此鍵擊存在k變數中
# if k == 27: # 27代表esc,可以檢視ascii碼表
# cv2.destroyallwindows() # 退出視窗
PS更換證件照顏色
ps是我們經常使用的設計軟體,在生活中使用的範圍也很廣,但是對於普通的使用者來說,也就是平時給自己的 美化一下,還有就是做一些證件照。今天和大家分享的是更改證件照的顏色,網上可能有很多,但是個人感覺都效果都不是很理想,要不就是很簡單,細節處理的很不好。不多說了,進入正題!首先開啟ps,雙擊工作區域,...
python證件照 python實現證件照換底功能
本來是在找交通識別的程式,然後湊巧看見了證件照換底,於是學習了一下 一開始在網上找了乙個很普遍寫的程式,但是效果並不好,想要放棄了,然後看見了這個,參考 python opencv實現證件照換底功能 本人基於此做了一些改進,便於自己執行和除錯,還加了中值濾波,本人覺得效果還不錯 import cv2...
證件照更換背景 by PS 6
學校突然讓把藍色背景換成黃色,粗糙一點的話美圖秀秀 光影魔術手都可以,還是覺得ps更專業一點 最開始的方法是 影象 調整 替換顏色 拾取顏色 結果d45450,可行,結果比自己摳圖 快速選擇等都好,但是感覺目標顏色會和最終的結果顏色略有不同 第二次嘗試 選擇 色彩範圍 選定要剔除的顏色 ctrl e...