我最近有类似的问题,这是我已经解决了它。我刚刚使用HSV谱中的后记色彩来定位它。你只需要选择一种既容易识别又不会在角度下变化很多的颜色。
我已经使用这段代码来控制一个带有2个便签纸的AR无人机,所以它必须是可靠和快速的。 Here it is in action。希望能帮助到你。
def centerFromImage(image, hue_min, hue_max):
image = cv2.cvtColor(image, cv2.cv.CV_RGB2HSV)
hue = image[:, :, 0]
# Filter out green postit note color
# yellow is 90-100
# pink is 137-150
# green is 80-90
hue[hue < hue_min] = 0
hue[hue > hue_max] = 0
hue[hue > 0] = 255
hue = cv2.erode(hue, None, iterations=2)
hue = cv2.dilate(hue, None, iterations=2)
contours, hierarchy = cv2.findContours(
hue,
cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE
)
center = [0, 0]
if len(contours) > 0:
contour = contours[0]
area = cv2.contourArea(contour)
for c in contours:
if cv2.contourArea(c) > area:
area = cv2.contourArea(c)
contour = c
m = cv2.moments(contour)
center = [0, 0]
if m['m00'] != 0:
center = [m['m10']/m['m00'], m['m01']/m['m00']]
center = [int(center[0]), int(center[1])]
return center
啊非常感谢你。你用什么hsv最小值和最大值来定位蓝色便利贴? – deez22
不知道确切的是,我有一个脚本,允许我直接从摄像头使用鼠标指针读取色调值,如果你想要的话,我可以找到它 – mirosval
是的,那会很有帮助。 – deez22