在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()

正如你所看到的,我设置了我的下限和上限来检测图像中的红色,但由于某种原因,正如你在下面的图片中看到的那样,我没有得到任何结果。任何提示和技巧都会非常有用!先感谢您! enter image description here

答案

您正在使用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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenCV Python 检测颜色

检测图像中的类似对象

运动对象检测和描述

python-opencv轮廓基本绘制

目标跟踪(5)使用 Opencv 和 Python 进行对象跟踪

如何计算模板匹配检测到的对象数量?