问题描述:昨天跟着官方指南使用opencv提取图片中指定颜色的物体,反复失败之后排查发现——pil截取JPG图片之后,再将numpy数组重新生成为图像存储,这张图片与原图颜色完全不一样(呈现偏蓝的色调)。
问题原因:官方指南里给出的例子是BGR转换到HSV,但读取JPG后,我需要进行的操作是RGB转换HSV
解决方式:
#RGB2HSV
img = ImageGrab.grab((1632,150,1632+30,150+75))
hsv_img = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2HSV)
#设定颜色的阈值
lower_yellow=numpy.array([20,120,235])
upper_yellow=numpy.array([30,195,255])
#根据阈值构建掩模
mask=cv2.inRange(hsv,lower_yellow,upper_yellow)
#对原图像和掩模进行位运算
res=cv2.bitwise_and(frame,frame,mask=mask)