【问题标题】:Detecting Colors on object in OpenCV - Python在 OpenCV 中检测对象的颜色 - Python
【发布时间】:2018-03-03 19:06:59
【问题描述】:

我在 OpenCV 3.4 中遇到颜色检测问题。我将在下面展示我的问题的图片。

import numpy as np
import cv2 


img= cv2.imread("C:\\Users\Stefan_Cepa\\Desktop\\dataset2\\set\\A6.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()

如您所见,我已设置下限和上限以检测图像中的红色,但出于某种原因,如下图所示,我没有得到任何结果。任何提示和技巧都会非常有帮助!先感谢您!

【问题讨论】:

  • 为什么30(即色轮中的60)的色调会变成红色?它看起来更像是黄色的......红色更像是 0 -15,因为它位于轮子的开头和结尾,你也应该得到 170-180。
  • 混合 hsv 和 bgr 值@api55

标签: python python-3.x opencv graphics computer-vision


【解决方案1】:

您正在使用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 色调的组合蒙版。

【讨论】:

  • 非常感谢!我已经修好了!我会将其标记为已接受!但我还有一个问题。很难区分物体的颜色和物体上的黄色。有什么建议吗?
  • 您可以对晶体管主体的颜色进行采样并为其创建一个非常紧密的遮罩 - 如果您有“可能”工作的一致闪电。否则,也许您应该尝试找出几何特征(边缘检测)并尝试将那些小带与较大的斑点隔离 - 不确定,很大程度上取决于您的图像质量随着时间的推移不确定,您也有很多反射。如果您可以使用(Canny?)获得干净的边缘,您可以反转找到的边缘并将它们相乘,这样您就可以在图像边缘周围获得薄的黑色垫片......在环和身体之间
  • 我想我理解但不确定如何在使用 Canny 后检测颜色?抱歉,如果问题很愚蠢,我通常是 OpenCV 和计算机视觉的新手。事情是,当我检测到颜色(例如红色)时,我需要在程序中知道我在图像上检测到红色。因为物体上有一个取决于带颜色的方程(物体称为电阻器)。另外,我需要知道检测到的颜色的顺序(例如,黄色是第一个波段,红色是第二个等)。有什么建议么?顺便说一句,非常感谢您的帮助。
  • 我的简历时间已经过去了。 Canny 为您提供黑白图片 - 大量黑色线条,少量白色线条。阈值它使所有接近黑色的值都是0,所有较亮的值都是255。从图像中减去它,如果颜色值低于0(或创建0/1蒙版并将其与图像bgr相乘),则将其归一化 - 你应该在 canny 是白色的地方得到 0,在 canny 是黑色的地方得到你以前的颜色。
  • 或者你检查这个armageddon421.de/?p=279 并找到那个github.com/armageddon421/ResCan 或者这个sites.google.com/site/ohmcalcucsb 然后从那里拿走...
猜你喜欢
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2023-03-15
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
相关资源
最近更新 更多