0

OpenCV を使用して、Web カメラで撮影した写真を分析しています。次に、画像をトリミングして、白黒のみに変換しました。次に、画像内のすべての輪郭を見つけて、最大の輪郭を特定したいと考えています。

Ubuntu OS のターミナル ウィンドウでコードを実行しています。

関連するコードは次のとおりです。

num_contours, contours = cvFindContours(contourimg, # num_contours - # of contours
                          cvCreateMemStorage(0),    # and contours are the actual contours
                          sizeof_CvContour)         # cvFindContours() destroys contourimg

max_size = float("-inf")
max_contour = None

for contour in contours.hrange():           # contours.hrange() returns a list of all contours
    print contour
    size = abs(cvContourArea(contour))      # calculates the area of the bounding rectangle
    if size > max_size:                             
        max_size = size                     # update max_size if larger contour found
        max_contour = contour               # update max_contour if larger contour found

コードを実行すると、さまざまなエラーが発生します。1 つはセグメンテーション違反で、Python を終了して端末に戻りますが、もう 1 つは次のとおりです。

 File "fitness.py", line 74, in boundingimg
size = abs(cvContourArea(contour))      # calculates the area of the bounding rectangle
File "/usr/lib/pymodules/python2.6/opencv/cv.py", line 6741, in cvContourArea
return _cv.cvContourArea(*args)

RuntimeError:  openCV Error:
    Status=Bad argument
    function name=cvPointSeqFromMat
    error message=Input array is not a valid matrix
    file_name=/build/buildd/opencv-2.1.0/src/cv/cvutils.cpp
    line=53

すべての輪郭の print ステートメントがあり、それらはすべて正常に動作するため、奇妙だと思います。for ループは、このエラーをスローする前に長時間続きます。この輪郭が他のすべての輪郭と何が違うのかわかりません。

また、コードが機能する場合もあります (頻繁ではありません) ため、毎回エラーが発生することはありません。

4

0 に答える 0