opencv의 HoughCircles () 함수 사용

2127 단어 ImageProcessing
인터넷에는 많은 문서와 예가 있지만 그래도 한번 써 보세요. 주로 기억을 깊이 있게 하기 때문에 쓰지 않아도 많이 서툴러질 거예요.
직접 선행 코드
		Mat Image = imread(img_path);

        Size dsize = Size(Image.cols * 0.5, Image.rows * 0.5);
        Mat srcImage(dsize, Image.type());

        resize(Image, srcImage, srcImage.size());

        Mat midImage, dstImage;

        cvtColor(srcImage, midImage, COLOR_BGR2GRAY); //             
        GaussianBlur(midImage, midImage, Size(9, 9), 2, 2);
        vector circles;
        HoughCircles(midImage, circles, HOUGH_GRADIENT, 1, midImage.rows/5, 150, 100, 0, 0);

        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]);
            //    
            circle(srcImage, center, 3, Scalar(0, 255, 0), -1, 8, 0);
            //     
            circle(srcImage, center, radius, Scalar(255, 50, 0), 3, 8, 0);
        }

        imshow("Output",srcImage);

함수 형식:void HoughCircles(InputArray image, OutputArray circles, int method, double dp, double minDist, double param1 = 100, double param2 = 100, int minRadius = 0, int maxRadius = 0)
매개 변수 설명: InputArray: 이미지를 입력하고 데이터 형식은 일반적으로Mat형으로 하면 됩니다. 8비트 단일 채널 그레이스케일 이미지가 필요합니다.
OutputArray: 감지된 원의 출력 벡터를 저장합니다.
method: 사용한 검출 방법, 현재 opencv는 호프 사다리법 한 가지 방법만 사용할 수 있습니다. 이 매개 변수는 HOUGHGRADIENT 가능(opencv 4.1.0 아래)
dp:double 형식의 dp. 원심의 누적기 이미지의 해상도가 입력 이미지의 비례의 역수를 측정하는 데 사용되며, 이 파라미터는 입력 이미지보다 해상도가 낮은 누적기를 만들 수 있습니다.상술한 글이 이해하기 어려우면 예를 보아라.예를 들어 dp=1일 경우, 누적기와 입력 이미지는 같은 해상도를 가진다.만약 dp=2라면, 누적기는 입력 이미지의 절반만큼 큰 폭과 높이를 가질 수 있다.
minDist: 호프를 위해 감지된 원의 중심 사이의 최소 거리 변환
param1: 이것은 세 번째 매개 변수method가 설정한 검측 방법에 대응하는 매개 변수입니다.현재 유일한 방법인 호프 사다리법 CVHOUGH_GRADIENT, 이것은 캔니 테두리 검출 산자에 전달되는 높은 한도값을 나타내고, 낮은 한도값은 높은 한도값의 절반을 나타낸다.
param2: 세 번째 매개 변수 method에서 설정한 검측 방법에 대응하는 매개 변수로 현재 유일한 방법인 호프 사다리법 HOUGHGRADIENT - 체크 단계의 중심에 대한 누적기 임계값을 나타냅니다.그것이 작을수록 존재하지 않는 원을 더 많이 검출할 수 있고, 크면 클수록 검출할 수 있는 원은 완벽한 원형에 가까워진다.
minRadius: 원 반지름의 최소값을 나타냅니다.
maxRadius: 원 반지름의 최대값을 나타냅니다.

좋은 웹페이지 즐겨찾기