0

現在、画像をセグメント化するために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

最後に、輪郭が出ました。ただし、この構造には、まだテストされていないすべての輪郭が含まれています。出力シーケンスの最初の輪郭のみを保持するにはどうすればよいですか?

よろしくお願いします!

4

1 に答える 1

0

最後に、輪郭を1つだけ取得する方法があります。Justeは、たとえば凸包など、入力にcvseqを必要とする別の関数を使用します。出力は、シーケンスの最初の輪郭のみになります。

于 2011-11-24T12:01:03.087 に答える