1
我想使用cv2.pointPolygonTest來檢查點是否放置在輪廓內部或外部,但我無法弄清楚它爲什麼不起作用。如何正確使用cv2.pointPolyginTest()和cv2.findcontours()?
這是我得到的輪廓的方式:
img_name = a295121c-f893-43f5-8d00-6bfddbc19658.jpg"
im = cv2.imread(img_name)
im_gray = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)
ret, thresh = cv2.threshold(im_gray, 10, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_TC89_L1)
而且我這是怎麼檢查點是內部或外部檢測對象。
x1 = cv2.pointPolygonTest(contours[0], (x, y), False)
在此tresholded圖像正常工作:
X1正確計算時(x,y)
裏面對象
np.shape(contours)
等於(1, 241, 1, 2)
但是這個形象:
所有點都爲外界
np.shape(contours)
計算等於(11,)
我想我沒有以適當的方式使用的輪廓,但我想不通的輪廓,其尺寸應我傳遞給cv2.pointPolygonTest()
在黑色初始化二進制掩碼('drawContours')上繪製白色填充輪廓通常更容易,然後每個點的值爲0(輪廓外)或255(輪廓內) – Miki