< 영상 특징 검출 >
영상 처리 단계 : 입력영상 -> 전처리 -> 후처리 -> 출력
< 코너 검출 >
<특징>
-> 영상으로부터 추출한 유용한 정보
-> 밝기 평균 , 히스토그램 , 엣지 , 코너
-> 전역특징 , 지역특징
<코너 검출 방법>
-> 엣지 방향이 급격히 변하는 부분
-> 꼭짓점 , 튀어나온 부분
-> 코너는 다른 지역 특징에 비해 분별력이 높고 영상 전체에 분포
코너
A: 평탄한 영역
B: 수평선
C: 수평선 + 코너
import cv2
import numpy as np
def findLocalMaxima(src):
kernel = cv2.getStructuringElement(shape=cv2.MORPH_RECT, ksize=(11,11))
dilate = cv2.dilate(src, kernel)
localMax = (src == dilate)
erode = cv2.erode(src, kernel)
localMax2 = (src > erode)
localMax &= localMax2
points = np.argwhere(localMax == True)
points[:, [0, 1]] = points[:, [1, 0]]
return points
path = './'
src = cv2.imread(path+'CornerTest.jpg')
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
res = cv2.preCornerDetect(gray, ksize=3)
_, res2 = cv2.threshold(np.abs(res), 0.1, 0, cv2.THRESH_TOZERO)
points = findLocalMaxima(res2)
dst = src.copy()
for x, y in points:
r = np.random.randint(0, 255)
g = np.random.randint(0, 255)
b = np.random.randint(0, 255)
cv2.circle(dst, (x, y), 4, (b, g, r), 2) # corners 이용 작은 원 그리기
cv2.imshow('src', gray)
cv2.imshow('res2', res2)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.waitKey(1)
'OpenCV' 카테고리의 다른 글
OpenCV - 해리스 코너 ,패스트 코너 검출 (0) | 2022.11.15 |
---|---|
OpenCV - 코너점 검출 (0) | 2022.11.15 |
OpenCV - 영상 공간 필터링 , 모폴로지, 엣지 추출 및 허프 변환 요약 (0) | 2022.11.14 |
OpenCV - 허프 변환 직선 , 원 검출 (0) | 2022.11.14 |
OpenCV - Canny Edge (0) | 2022.11.14 |