OpenCV 호 프 원 변환 cv2.HoughCircles()

이 블 로 그 는 호 프 원 변환 을 통 해 그림 에서 원 을 찾 는 방법 을 배 울 것 이 며,OpenCV 는 cv2.Hough Circles()를 사용 하여 호 프 원 변환 을 실현 할 것 이다.
circles = cv2.HoughCircles(img,
cv2.HOUGH_GRADIENT, 1, 20,
param1=50, param2=40, minRadius=25, maxRadius=0)
img:검 측 대상 그 레이스 케 일 cv2.HOUGHGRADIENT:검 측 방법,호 프 경사도 1:검 측 된 원 은 원본 이미지 와 같은 크기 를 가지 고 있 습 니 다.dp=2.검 측 된 원 은 원본 이미지 의 절반 인 20:검 측 된 인접 원 의 중심 최소 거리(매개 변수 가 너무 작 으 면 실제 원 을 제외 하고 여러 개의 인접 원 을 잘못 감지 할 수 있 습 니 다.너무 크 면 원 이 빠 질 수도 있다.)param 1:재\#HOUGHŠu 경사도 의 경우,그것 은 비교적 높 은 것 이다.두 개의 한도 값 은 Canny 가장자리 감지 기(비교적 낮은 작은 두 배)에 전달 된다.param 2:재\#HOUGHŠu 경사도 의 경우 단계 원심 의 누적 기 한도 값 을 측정 합 니 다.그것 이 작 을 수록 가짜 원 이 검출 될 수 있다.minRadius:최소 원 반경 maxRadius:최대 원 반경,<=0 이면 최대 이미지 사 이 즈 를 사용 합 니 다.만약<0 이면 반경 을 찾 지 못 한 중심 으로 돌아간다.
1.효과 도
원본 그림 VS 검 측 원 효과 그림 은 다음 과 같 습 니 다.
아래 오른쪽 그림 에서 3 개의 바깥쪽 동 그 란 녹색 을 볼 수 있 고 원심 빨간색 이 성공 적 으로 검출 되 었 습 니 다.
在这里插入图片描述
원 의 최소 반경 설정 은 25 에서 10 으로 조정 되 며 원 을 잘못 감지 할 수도 있 습 니 다.효과 도 는 다음 과 같 습 니 다.
在这里插入图片描述
원 반경의 한도 값(param 2 설정 35)을 검출 한 결과 최소 원 반경 설정 10 은 원 을 잘못 검출 할 수도 있 습 니 다.효과 도 는 다음 과 같 습 니 다.
在这里插入图片描述
2.소스 코드

#      

import cv2
import numpy as np

cimg = cv2.imread('opencv_logo_350.jpg')
cv2.imshow("origin", cimg)
cv2.waitKey(0)
img = cv2.cvtColor(cimg,cv2.COLOR_BGR2GRAY)
img = cv2.medianBlur(img, 5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

# - img:        
# - cv2.HOUGH_GRADIENT:     ,    
# - 1:                ,dp=2,            
# - 20:             (       ,         ,               。    ,        。)
# - param1: #HOUGHŠu      ,     .        Canny     (        )。
# - param2: #HOUGHŠu      ,              。   ,         ;
# - minRadius:     ,         
# - maxRadius:     ,  <=0,         。  <0,            。
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20,
                           param1=50, param2=40, minRadius=0, maxRadius=0)
#           ,         
# circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20,
#                            param1=50, param2=40, minRadius=0, maxRadius=0)
# circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20,
#                            param1=50, param2=30, minRadius=10, maxRadius=0)

circles = np.uint16(np.around(circles))

print(len(circles))
print(circles)
for i in circles[0, :]:
    #      (  )
    cv2.circle(cimg, (i[0], i[1]), i[2], (0, 255, 0), 2)

    #     (  )
    cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3)

cv2.imshow('detected circles', cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
레 퍼 런 스
https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html#hough-circles
여기 서 OpenCV 호 프 원 변환 cv2.Hough Circles()에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 OpenCV 호 프 원 변환 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기