2013-03-15 1 views
1

허프 필터 후의 결과 없음 : 다음 아무 결과가 돌아없고, cannyresult 서클의 많은 사진을 의미 단말 인쇄 noI 이런 신중한 필터를 사용하여 프로그램의

circles = cv2.HoughCircles(cannyresult,cv2.cv.CV_HOUGH_GRADIENT,1,10) 
    if circles is None: 
     print'no ' 

을 . 누군가 제발 도와 줄 수 있어요?

+0

은 '8 비트, 단일 채널, 그레이 스케일 입력 이미지'입니다. – Awalias

+0

예, 결과가 나오지 않습니다 .. 이상합니다. – user1510711

+0

내 대답을 참조하십시오, 함수 '결과'반환하지 않습니다, 당신은 인수로 벡터 ('벡터 원)'그것을 전달하고 발견 된 원으로 벡터를 채 웁니다. – Awalias

답변

0

It's all about parameters, 항상 그렇습니다. HoughCircles에서 사용되는 매개 변수는 fundamental role입니다.

더 도와 드릴 수 있으면 좋겠지 만 입력 이미지가 없어도 손이 묶일 수 있습니다. 내가 당신과 공유 한 마지막 참조는 실제 매개 변수로 다른 대답에 대한 링크를 제공합니다. 실제 소스 코드는 함수 매개 변수가 작동 할 때까지 조정하는 것이 중요하다는 것을 보여줍니다.

+0

입력 이미지의 경우 8 비트, sigle 채널, 회색 음영을 사용합니다. 다른 것들은 문제가 될 수 있는지 모르겠습니다. 아직 결과가 없습니다. – user1510711

0

the documentation에서 사용은 다음

Python: cv2.HoughCircles(image, method, dp, minDist[, circles[, 
    param1[, param2[, minRadius[, maxRadius]]]]]) → circles 

여기서 사용 예와

circles – Output vector of found circles. Each vector is encoded as a 
3-element floating-point vector (x, y, radius) 

:

#include <cv.h> 
#include <highgui.h> 
#include <math.h> 

using namespace cv; 

int main(int argc, char** argv) 
{ 
    Mat img, gray; 
    if(argc != 2 && !(img=imread(argv[1], 1)).data) 
     return -1; 
    cvtColor(img, gray, CV_BGR2GRAY); 
    // smooth it, otherwise a lot of false circles may be detected 
    GaussianBlur(gray, gray, Size(9, 9), 2, 2); 
    vector<Vec3f> circles; 
    HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 
       2, gray->rows/4, 200, 100); 
    for(size_t i = 0; i < circles.size(); i++) 
    { 
     Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); 
     int radius = cvRound(circles[i][2]); 
     // draw the circle center 
     circle(img, center, 3, Scalar(0,255,0), -1, 8, 0); 
     // draw the circle outline 
     circle(img, center, radius, Scalar(0,0,255), 3, 8, 0); 
    } 
    namedWindow("circles", 1); 
    imshow("circles", img); 
    return 0; 
} 
,617 당신이 필요로하는

circles = HoughCircles(gray, CV_HOUGH_GRADIENT... 

그것을 벡터 통과 : 주목해야 할

중요한 비트는 대신한다는 것입니다

vector<Vec3f> circles; 

    HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 
       2, gray->rows/4, 200, 100); 

이 프로그램의 C 스타일의 이상을