我最近有類似的問題,這是我已經解決了它。我剛剛使用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