在OpenCV中检测对象上的颜色 - Python
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在OpenCV中检测对象上的颜色 - Python相关的知识,希望对你有一定的参考价值。
我在OpenCV 3.4中遇到了颜色检测问题。我将在下面展示我的问题。
import numpy as np
import cv2
img= cv2.imread("C:UsersStefan_CepaDesktopdataset2setA6.png")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_range = np.array([30,150,150])
upper_range = np.array([255,255,180])
mask = cv2.inRange(hsv, lower_range, upper_range)
output = cv2.bitwise_and(img, img, mask = mask)
cv2.imshow("images", np.hstack([img, output]))
cv2.imshow('mask', mask)
while(True):
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
正如你所看到的,我设置了我的下限和上限来检测图像中的红色,但由于某种原因,正如你在下面的图片中看到的那样,我没有得到任何结果。任何提示和技巧都会非常有用!先感谢您!
答案
您正在使用hsv
颜色空间,但您提供的bgr
值范围。它们是不相容的。
对于hsv:
对于HSV,色调范围是
[0,179]
,饱和度范围是[0,255]
,值范围是[0,255]
。不同的软件使用不同的规模。因此,如果要将OpenCV值与它们进行比较,则需要对这些范围进行标准化。 source: docs.opencv.org/3.2.0
你的代码几乎看起来像这样:http://pyimagesearch.com/2014/08/04/opencv-python-color-detection。只有他们使用bgr。
解:
将掩码范围转换为hsv或将图像加载为bgr
。
hsv上的红色是在色调0上,所以你可能需要170-180色调和0-10色调的组合掩模。
以上是关于在OpenCV中检测对象上的颜色 - Python的主要内容,如果未能解决你的问题,请参考以下文章