1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 证件照背景蓝色变其他颜色——用python与OpenCV

证件照背景蓝色变其他颜色——用python与OpenCV

时间:2023-01-10 05:05:36

相关推荐

证件照背景蓝色变其他颜色——用python与OpenCV

代码如下,需要注意的是下面这三行,[78, 43, 46]为蓝色在HSV空间中H,S,V三个值的下限

[110, 255, 255]为蓝色在HSV空间中H,S,V三个值的上限,调用cv2.inRange函数可将位于该阈值下限与上限之间的颜色标记为背景,以与图像其他区域区分开。关于HSV颜色空间,移步这里

lower_blue = np.array([78,43,46]) #此处为蓝色在HSV空间中H,S,V三个值的下限upper_blue = np.array([110, 255, 255]) #此处为蓝色在HSV空间中H,S,V三个值的上限mask = cv2.inRange(hsv, lower_blue, upper_blue)

import cv2import numpy as npimg=cv2.imread('wangyiweiblue.jpg')cv2.imshow('wangyiweiblue',img)rows, cols, channels = img.shapecv2.waitKey(0) #等待键盘输入cv2.destroyAllWindows() #键盘输入任意值后销毁所有窗口# 首先将读取的图像默认BGR格式转为HSV格式,然后通过inRange函数获取背景的maskhsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)lower_blue = np.array([78,43,46]) #此处为蓝色在HSV空间中H,S,V三个值的下限upper_blue = np.array([110, 255, 255]) #此处为蓝色在HSV空间中H,S,V三个值的上线mask = cv2.inRange(hsv, lower_blue, upper_blue)# lower_white = np.array([0,0,221])# upper_white = np.array([180,30,255])# mask = cv2.inRange(hsv, lower_white, upper_white)cv2.imshow('Mask', mask)cv2.waitKey(0)# 蓝色的背景在图中用白色表示,白色区域就是要替换部分,但是黑色区域内有白点干扰,进一步优化,腐蚀和膨胀# 腐蚀和膨胀erode = cv2.erode(mask, None, iterations=1)cv2.imshow('erode', erode)cv2.waitKey(0)dilate = cv2.dilate(erode, None, iterations=1)cv2.imshow('dilate', dilate)cv2.waitKey(0)# 替换背景色# 遍历全部像素点,如果该颜色为dilate里面为白色(255),则说明该点所在为背景区域,于是在原图img中进行颜色替换for i in range(rows):for j in range(cols):if dilate[i,j] == 255:img[i,j] = (0,0,255) #此处替换颜色,为BGR通道,替换成红色cv2.imshow('res', img)cv2.waitKey(0)cv2.destroyAllWindows()

遗留问题,想把背景为白色的证件证替换成背景为蓝色的证件证,但本人穿了一件白衬衫,导致白衬衫也被识别为了背景并被替换成了蓝色,尚未解决。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。