2010-05-29 10 views
3

나는 이미지에서 원형 모양을 감지하는 프로그램을 만들고 있습니다. 나는 Hough Transform이 최고 일 것이라고 결정했고 OpenCV 라이브러리에서 Hough Transform을 발견했습니다. 문제는 그것을 사용하려고 할 때 수정 방법을 모른다는 오류가 발생한다는 것입니다. Python 용 OpenCV가 완벽하게 구현되지 않았습니까? 프로그램을 작동시키는 데 필요한 라이브러리가 수정 되었습니까?OpenCV Python HoughCircles 오류

여기에 코드입니다 :

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 Error: Null pinter() in unknown function, file ..\..\..\..\ocv\openc\src\cxcore\cxdatastructs.cpp, line 408 Traceback (most recent call last): File "ellipse-detect-webcam.py", line 20, in cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100) cv.error

감사합니다.

답변

1

가치가있는 부분에 대해서는 cv.HoughCircles이 비어있는 목록을 정상적으로 반환하는 대신 이미지에서 원형 모양을 감지 할 수없는 경우 중단된다는 사실을 발견했습니다.

0

이미지가 유효합니까?
그들을 표시 할 수 있습니까 (원래 및 그레이 스케일링)

그렇지 않으면 함수에 대한 args가 정확합니까? 스토리지가 더 큰 것으로 제대로

+0

모든 인수를 확인했습니다. 그들은 옳은 것처럼 보인다. http://www.seas.upenn.edu/~bensapp/opencvdocs/ref/opencvref_cv.htm#cv_imgproc – Dan

0

를 포인터 또는 참조를해야 통과된다, 나는 당신이 그래서 cvMat이 dinamically 할당되지 않은 생각 예를 들어 라인 변경 :

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

에 :

storage = cv.CreateMat(1, img.rows * img.cols, cv.CV_32FC3) 
+1

아니요, 'storage'는 실제로 원 목록이 저장된 위치입니다. 그래서'cv.CreateMat (1, max_circles, cv.CV_32FC3)'이 맞습니다. – ptomato