使用opencv按顺序检测图像中的颜色
Detecting colors in an Image in sequence using opencv
我正在做一个项目,我需要从图像中按顺序识别颜色
我是 openCv 的新手。需要帮助。图片在这里
因为我认为你必须识别方块内部的颜色,而不是图像中的所有颜色,所以你应该首先检测所有方块。
之后,对于每个正方形,识别颜色就变得非常容易,因为您可以在不同的颜色空间(rgb、hsv 等)中获得像素值信息。
我建议你在开始之前阅读 tutorials,你可以在官方文档中找到它们,它们真的很有用。
你可以试试这个(你的图像保存到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或任何特定顺序,你可以重新排序。
我正在做一个项目,我需要从图像中按顺序识别颜色
我是 openCv 的新手。需要帮助。图片在这里
因为我认为你必须识别方块内部的颜色,而不是图像中的所有颜色,所以你应该首先检测所有方块。
之后,对于每个正方形,识别颜色就变得非常容易,因为您可以在不同的颜色空间(rgb、hsv 等)中获得像素值信息。
我建议你在开始之前阅读 tutorials,你可以在官方文档中找到它们,它们真的很有用。
你可以试试这个(你的图像保存到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或任何特定顺序,你可以重新排序。