我畫了一個極端點周圍的輪廓.里面的多邊形圖我有其他點.如何檢查它們是否在輪廓內?
uj5u.com熱心網友回復:
您可以使用OpenCV中提供的cv2.pointPolygonTest()函式.例如:
dist = cv2.pointPolygonTest(cnt,(50,50),True)
在這個例子中,我們檢查坐標(50,50)是否與輪廓cnt一起出現
> dist回傳以下三種中的一種:
>如果該點位于輪廓內,則為正值>如果該點在輪廓之外,則為負值>如果該點在輪廓上,則為零
>在函式cv2.pointPolygonTest()中,第三個引數決定是否需要以下兩個之一:
>如果為True,則dist回傳點的正距離或負距離,如果它分別位于輪廓內部或外部.>另一方面,如果設定為False,則回傳1,-1或0,具體取決于位于內部,外部或輪廓上的點
有關詳細資訊,請參見THE DOCS
插圖:
我添加了一個示例來說明它是如何作業的.我考慮了以下獲得輪廓的影像:

我假設以下幾點用作說明:
(50,70),(170,152),(152,48)

dist1 = cv2.pointPolygonTest(contours[0], (50, 70), True)
dist2 = cv2.pointPolygonTest(contours[0], (170, 152), True)
dist3 = cv2.pointPolygonTest(contours[0], (152, 48), True)
print('dist1 : ', dist1)
print('dist2 : ', dist2)
print('dist3 : ', dist3)
輸出:
('dist1 : ', -45.17742799230607)
('dist2 : ', 49.9799959983992)
('dist3 : ', -0.0)
uj5u.com熱心網友回復:
這個寶貝回答得好!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232712.html
標籤:其他技術討論專區
