查找图像中颜色方块的轮廓和中点
Finding contours and midpoints of color squares in an image
我有一张图片,里面有彩色方块:
我试图找到颜色方块的轮廓,以及颜色方块的中点来找到像素值。
您可以使用 HSV colour space
,但您必须手动选择颜色范围。
根据颜色更改 H
值,并为 S
和 V
保留 0-255
的整个范围,或者您也可以将它们限制为更多具体。
然后你可以使用轮廓在检测到的轮廓周围绘制一个边界框并找到中心。
这是代码
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('UQjNf.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
bi = np.zeros((hsv.shape[:2]),np.uint8)
bi[np.where((((hsv <= [20,255,255]) & (hsv >= [20,0,0])) | (hsv <= [21,255,255]) & (hsv >= [21,0,0]) | ((hsv <= [22,255,255]) & (hsv >= [22,0,0])) ).all(axis = 2))] = [255]
plt.imshow(bi)
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
这是一种颜色很好的颜色
希望对您有所帮助。
我有一张图片,里面有彩色方块:
我试图找到颜色方块的轮廓,以及颜色方块的中点来找到像素值。
您可以使用 HSV colour space
,但您必须手动选择颜色范围。
根据颜色更改 H
值,并为 S
和 V
保留 0-255
的整个范围,或者您也可以将它们限制为更多具体。
然后你可以使用轮廓在检测到的轮廓周围绘制一个边界框并找到中心。
这是代码
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('UQjNf.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
bi = np.zeros((hsv.shape[:2]),np.uint8)
bi[np.where((((hsv <= [20,255,255]) & (hsv >= [20,0,0])) | (hsv <= [21,255,255]) & (hsv >= [21,0,0]) | ((hsv <= [22,255,255]) & (hsv >= [22,0,0])) ).all(axis = 2))] = [255]
plt.imshow(bi)
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
这是一种颜色很好的颜色
希望对您有所帮助。