1

opencv でハフ変換を使用して円を検出しようとしています。

シーンに円がない場合、ヌル ポインター エラーが発生します。私はこれを例外なく処理できると思います。

ただし、円がある場合、ストレージ オブジェクトを操作しようとするとエラーが発生します。
たとえば、それをnumpy配列に変換しようとしましたが、ほとんどの場合ではありませんが、次の致命的なエラーが発生します。
フレームが正しく表示される場合があります。

OpenCV Error: Bad argument (unrecognized or unsupported array type) in cvSetData,
    file /build/buildd/opencv-2.3.1/modules/core/src/array.cpp,

私のコード

while True:
    img = billy.get_frame()

    # Convert from BGR to HSV
    grey = cv.CreateImage(cv.GetSize(img), 8, 1)
    cv.CvtColor(img, grey, cv.CV_BGR2GRAY)

    cv2.cv.Smooth(grey, grey, cv.CV_GAUSSIAN, 7, 7)

    circles = np.array([], dtype=np.float32)

    storage = cv.CreateMat(1, 2, cv.CV_32FC3)
    try:
        cv.HoughCircles(grey, storage, cv.CV_HOUGH_GRADIENT, 2, grey.height/4, 200, 100)

        for i in range(0,len(np.asarray(storage))):
                cv.Circle(img, ( int(np.asarray(storage)[i][0][0]), int(np.asarray(storage)[i][0][1]) ), int(np.asarray(storage)[i][0][2]), cv.CV_RGB(255, 0, 0), 2, 8, 0 )
    except:
        pass

    cv.ShowImage("threshholded", img )
4

0 に答える 0