現在、画像をセグメント化するためにFindContours関数とDrawContours関数を使用しています。
外部の輪郭のみを抽出し、特定のポイントを含む輪郭のみを保存したいと思います。h_nextを使用してcv_seq構造を移動し、PointPolygonTestを使用してポイントが含まれているかどうかをテストします
実際に興味のある輪郭を見つけることができますが、私の問題はそれを抽出することです。
これがPythonコードです:
def contour_from_point(contours, point, in_img):
"""
Extract the contour from a sequence of contours which contains the point.
For this to work in the eagle road case, the sequence has to be performed using the
FindContours function with CV_RETR_EXTERNAL
"""
if contours:
# We got at least one contour. Search for the one which contains point
contour = contours # first contour of the list
distance = cv.PointPolygonTest(contour, point, 0)
while distance < 0: # 0 means on eadge of contour
contour = contour.h_next()
if contour: # avoid end of contours
distance = cv.PointPolygonTest(contour, point, 0)
else :
contour = None
else:#
contour = None
return contour
最後に、輪郭が出ました。ただし、この構造には、まだテストされていないすべての輪郭が含まれています。出力シーケンスの最初の輪郭のみを保持するにはどうすればよいですか?
よろしくお願いします!