5

画像の円形を検出するプログラムに取り組んでいます。ハフ変換が最適だと判断し、OpenCVライブラリで見つけました。問題は、それを使おうとすると、修正方法がわからないというエラーが発生することです。OpenCV for Pythonは完全には実装されていませんか?プログラムが機能するために必要なライブラリの修正はありますか?

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

import cv

#cv.NamedWindow("camera", 1)
capture = cv.CaptureFromCAM(0)

while True:
    img = cv.QueryFrame(capture)
    gray = cv.CreateImage(cv.GetSize(img), 8, 1)
    edges = cv.CreateImage(cv.GetSize(img), 8, 1)

    cv.CvtColor(img, gray, cv.CV_BGR2GRAY)
    cv.Canny(gray, edges, 50, 200, 3)
    cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)

    storage = cv.CreateMat(1, 2, cv.CV_32FC3)

    #This is the line that throws the error
    cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)

    #cv.ShowImage("camera", img)
    if cv.WaitKey(10) == 27:
         break

そして、これが私が得ているエラーです:

OpenCVエラー:不明な関数のNull pinter()、ファイル.. \ .. \ .. \ .. \ ocv \ openc \ src \ cxcore \ cxdatastructs.cpp、行408トレースバック(最後の最後の呼び出し):ファイル "ellipse- detect-webcam.py "、行20、cv.HoughCircles(edges、storage、cv.CV_HOUGH_GRADIENT、2、gray.height / 4、200、100)cv.error

助けてくれてありがとう。

4

3 に答える 3

1

cv.HoughCircles価値のあることとして、空のリストを正常に返す代わりに、画像内の円形を検出できない場合は中止することがわかりました。

于 2011-03-30T14:39:21.570 に答える
0

画像は有効ですか?
それらを表示できますか(オリジナルとグレースケール)

それ以外の場合、関数の引数が正しいことを確認しますか?ポインタまたは参照を正しく渡していますか

于 2010-05-29T01:07:12.207 に答える
0

ストレージはもっと大きくする必要があります。cvMatは動的に割り当てられていないので、たとえば次の行を変更する必要があります。

storage = cv.CreateMat(1, 2, cv.CV_32FC3)

に:

storage = cv.CreateMat(1, img.rows * img.cols, cv.CV_32FC3)
于 2011-01-26T13:14:29.950 に答える