Python OpenCV 강좌 : 제 23강 - 코너 검출

Python OpenCV Good Features To Track

Python OpenCV 강좌 : 제 23강 - 코너 검출
[ Python-OpenCV ] - 윤대희

코너 검출(Good Features To Track)


1 영상이나 이미지에서 코너를 검출하는 알고리즘입니다. 코너 검출 알고리즘은 정확하게는 트래킹(Tracking) 하기 좋은 지점(특징)코너라 부릅니다.

꼭짓점은 트래킹하기 좋은 지점이 되어 다각형이나 객체의 꼭짓점을 검출하는 데 사용합니다.



Main Code


import cv2

src = cv2.imread("Image/coffee.jpg")
dst = src.copy()

gray = cv2.cvtColor(src, cv2.COLOR_RGB2GRAY)
corners = cv2.goodFeaturesToTrack(gray, 100, 0.01, 5, blockSize=3, useHarrisDetector=True, k=0.03)

for i in corners:
    cv2.circle(dst, tuple(i[0]), 3, (0, 0, 255), 2)

cv2.imshow("dst", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()



Detailed Code


corners = cv2.goodFeaturesToTrack(gray, 100, 0.01, 5, blockSize=3, useHarrisDetector=True, k=0.03)

cv2.goodFeaturesToTrack()를 활용해 윤곽선들의 이미지에서 코너를 검출합니다.

cv2.goodFeaturesToTrack(입력 이미지, 코너 최댓값, 코너 품질, 최소 거리, 마스크, 블록 크기, 해리스 코너 검출기 유/무, 해리스 코너 계수)을 의미합니다.

입력 이미지는 8비트 또는 32비트의 단일 채널 이미지를 사용합니다.

코너 최댓값은 검출할 최대 코너의 수를 제한합니다. 코너 최댓값보다 낮은 개수만 반환합니다.

코너 품질은 반환할 코너의 최소 품질을 설정합니다. 코너 품질은 0.0 ~ 1.0 사이의 값으로 할당할 수 있으며, 일반적으로 0.01 ~ 0.10 사이의 값을 사용합니다.

최소 거리는 검출된 코너들의 최소 근접 거리를 나타내며, 설정된 최소 거리 이상의 값만 검출합니다.

마스크입력 이미지와 같은 차원을 사용하며, 마스크 요솟값이 0인 곳은 코너로 계산하지 않습니다.

블록 크기는 코너를 계산할 때, 고려하는 코너 주변 영역의 크기를 의미합니다.

해리스 코너 검출기 유/무는 해리스 코너 검출 방법 사용 여부를 설정합니다.

해리스 코너 계수는 해리스 알고리즘을 사용할 때 할당하며 해리스 대각합의 감도 계수를 의미합니다.

  • Tip : 코너 품질에서 가장 좋은 코너의 강도가 1000이고, 코너 품질이 0.01이라면 10 이하의 코너 강도를 갖는 코너들은 검출하지 않습니다.
  • Tip : 최소 거리의 값이 5일 경우, 거리가 5 이하인 코너점은 검출하지 않습니다.


for i in corners:
    cv2.circle(dst, tuple(i[0]), 3, (0, 0, 255), 2)

코너 검출 함수를 통해 corners가 반환되며, 이 배열안에 코너들의 좌표가 저장돼 있습니다.

반복문을 활용해 dst에 빨간색 원으로 지점을 표시합니다.



Result


2


도움이 되셨다면 광고 클릭 부탁드립니다.


Book Image

책이 출간되었습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C# OpenCvSharp4
  • Python OpenCV4
  • Using Tesseract
  • Using TensorFlow
  • Using Regular Expression
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]


    ⤧  Previous post Python OpenCV 강좌 : 제 22강 - 다각형 근사 ⤧  Next post Python OpenCV 강좌 : 제 24강 - 블록 껍질
    Python-OpenCV Category