扣图(图像色彩空间转换)

利用图像色彩空间转换,进行扣图。

import cv2
import numpy

#创建图像
img=cv2.imread('jiuXinNai.jpg',cv2.IMREAD_REDUCED_COLOR_2)

#扣图1,扣除黄色
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #色彩空间转换
kou_part1=cv2.inRange(hsv,(26,43,46),(34,255,255))  #取出图像中黄色的部分,kou_part1表示黄色图像
cv2.bitwise_not(kou_part1,kou_part1)    #将kou_part1取反,就可以得到非黄色部分的一个图像
img_kou1=cv2.bitwise_and(img,img,mask=kou_part1)    #将原图像和非黄色部分图像进行逻辑与运算,就可以抠出没有黄色的图像

#抠图2,将扣图1中的图像再抠除橙色
kou_part2=cv2.inRange(hsv,(11,43,46),(25,255,255))  #取出图像中橙色的部分,kou_part2表示橙色图像
cv2.bitwise_not(kou_part2,kou_part2)    #将kou_part2取反,就可以得到非橙色部分的一个图像
img_kou2=cv2.bitwise_and(img_kou1,img_kou1,mask=kou_part2)  #将图像和非橙色部分图像进行逻辑与运算,就可以抠出没有橙色的图像

#显示图像
cv2.imshow('img',img)

cv2.imshow('img_kou1',img_kou1)
cv2.imshow('img_kou2',img_kou2)


#保存图像
cv2.imwrite("D:/img.jpg",img)
cv2.imwrite("D:/img_kou1.jpg",img_kou1)
cv2.imwrite("D:/img_kou2.jpg",img_kou2)


cv2.waitKey(0)
cv2.destroyAllWindows()

首先是从网上随便找来的一张动漫图片,主要目的是把玖辛奈从图片里面扣出来。

扣图(图像色彩空间转换)_第1张图片

 一眼看过去,动漫人物背景应该有三种背景颜色:黄色、橙色、白色,所以第一个先扣除黄色,得到下面的图像。

扣图(图像色彩空间转换)_第2张图片

扣除了黄色之后,再扣除橙色,就可以得到下面的图像。

扣图(图像色彩空间转换)_第3张图片 

 而上面就是最终的扣图效果了,而为什么不扣除白色呢?因为动漫人物身上也有白色,如果把白色消去的话,那动漫人物的脸和衣服上的白色也会被消去,就达不到扣图的效果了。

比如会出现这种情况

扣图(图像色彩空间转换)_第4张图片

我已经扣除了白色部分了,但是好像还是没有清理干净, 另外一部分是什么颜色,我就不太清楚了。

最后是inRange的取值表。

扣图(图像色彩空间转换)_第5张图片

 

你可能感兴趣的:(数字图像处理,计算机视觉,opencv,图像处理)