자바+opencv 3.2.0 hough 원 검 측 기능 실현

hough 원 검 측 은 hough 선 검 측 원리 와 비슷 하 며 원 에 있어 매개 변수 좌표계 에서 C:(x,y,r)로 표시 합 니 다.
함수:
Imgproc.HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1, double param2, int minRadius, int maxRadius)
매개 변수 설명:
이미지:원본 이미지
circles:검 측 된 원 의 출력 벡터(x,y,r)
method:사용 하 는 검출 방법,현재 Imgproc.HOUGHGRADIENT
dp:원심 의 누적 기 이미지 와 원본 이미지 간 의 비례 역 수 를 측정 합 니 다
minDist:검출 된 원 의 원심 사이 의 최소 거리
param 1:method 가 설정 한 검 측 방법 에 대응 하 는 매개 변수,HOUGHGRADIENT 는 가장자리 검출 연산 자의 높 은 한도 값(낮은 한도 값 은 높 은 한도 값 의 절반),기본 값 100 을 나타 낸다.
param 2:method 가 설정 한 검 측 방법 에 대응 하 는 매개 변수,HOUGHGRADIENT 는 누산기 의 한도 값 을 나타 낸다.값 이 작 을 수록 무관 한 원 이 검출 됩 니 다.
minRadius:원 반지름 의 최소 반지름,기본 값 은 0 입 니 다.
maxRadius:원 반경의 최대 반경,기본 값 은 0(minRadius 와 maxRadius 가 모두 기본 값 이 0 이면 Hough Circles 함수 가 반경 을 자동 으로 계산 합 니 다)
예제 코드:

public static void main(String[] args)
  {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat src = Imgcodecs.imread("F:\\websbook_com_1589226.jpg");

    Mat dst = src.clone();
    Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);

    Mat circles = new Mat();
    Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100, 440, 50, 0, 345);
    // Imgproc.HoughCircles(dst, circles, Imgproc.HOUGH_GRADIENT, 1, 100,
    // 440, 50, 0, 0);
    for (int i = 0; i < circles.cols(); i++)
    {
      double[] vCircle = circles.get(0, i);

      Point center = new Point(vCircle[0], vCircle[1]);
      int radius = (int) Math.round(vCircle[2]);

      // circle center
      Imgproc.circle(src, center, 3, new Scalar(0, 255, 0), -1, 8, 0);
      // circle outline
      Imgproc.circle(src, center, radius, new Scalar(0, 0, 255), 3, 8, 0);
    }

    Imgcodecs.imwrite("F:\\dst2.jpg", src);
  }

원본 그림:

출력 그림:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기