【问题标题】:Detecting colors in an Image in sequence using opencv [closed]使用opencv按顺序检测图像中的颜色[关闭]
【发布时间】:2019-09-01 04:35:26
【问题描述】:

我正在做一个项目,我需要从图像中按顺序识别颜色

我是 openCv 的新手。需要帮助。图片在这里

【问题讨论】:

  • 您好,您能找到解决方案吗?

标签: python opencv color-detection


【解决方案1】:

你可以试试这个(你的图像保存到color_strip.jpg),基本上你加载文件并将图像切割成相同颜色的块,然后对块进行平均以获得平均颜色:

>>> import cv2
>>> img = cv2.imread( 'color_strip.jpg' )
>>> img.shape
(3677, 235, 3)
>>> square_size = 2640 / 10
>>> for i in range(11) :
...     top = i * square_size + 10
...     bottom = top + 160
...     data = img[top:bottom,80:210,:]
...     _ = cv2.imwrite( 'data_%02d.jpg' % i, data )
...     print 'mean color', data.mean(axis=0).mean(axis=0)
... 
mean color [  92.55783654  127.716875    143.74230769]
mean color [  95.17754808  126.11514423  157.42605769]
mean color [  84.09365385  151.56105769  190.28004808]
mean color [  83.29528846  148.21403846  165.08956731]
mean color [  50.76451923  140.88158654  211.09413462]
mean color [  19.91221154  150.03350962  221.26485577]
mean color [  41.71350962  150.38677885  200.61456731]
mean color [ 114.19682692  155.68245192  190.50230769]
mean color [ 106.44120192  160.234375    194.67211538]
mean color [ 106.43980769  148.12759615  102.86701923]
mean color [ 117.02735577  151.62211538  171.19259615]
>>> 

您可以检查data_XX.jpg 文件以确保它们确实包含彩色条纹,而不是其他内容。

一个小细节,打印的结果是 OpenCV 使用的 BGR 格式,如果需要 RGB 或任何特定顺序,可以重新排序。

【讨论】:

  • 您好,感谢您的解决方案。实际上,我不需要任何颜色的平均值,我正在寻找图像中的颜色,输出​​应该是图像每种颜色的 rgb 值,并且应该是从上到下
  • @MaheshReddy 当你说你不需要刻薄时,你是否理解颜色方块的颜色并不统一,并且取决于你在哪个点对颜色进行采样,你会得到不同的结果??取该区域的平均值是缓解此问题的方法之一。
【解决方案2】:

由于我认为您必须识别正方形内的颜色,而不是图像中的所有颜色,因此您应该首先检测所有正方形。

之后对于每个正方形,识别颜色非常容易,因为您可以在不同的颜色空间(rgb、hsv 等)中获得像素值信息。

我建议你在开始之前阅读官方文档中的tutorials,它们真的很有用。

【讨论】:

    猜你喜欢
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2016-01-16
    • 1970-01-01
    相关资源
    最近更新 更多