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 )