<코너점 검출 >
cv2.preCornerEigenValsAndVecs(src, blocksize, ksize)
-src : input
-blockSize : 이웃 윈도우 크기
-ksize sobel filter mask
-영상 내 각 이웃의 covariance matrix M의 eigenvalue, eigenvector을 계산 하여 코너 검출
-eigenvalue가 모두 작은 값: 평평한 영역에 있는 점
-eigenvalue 둘중 하나는 크고 하나는 작은 값: 엣지
-eigenvalue 두 값이 모두 큰 값 : 코너
[실습]
src = cv2.imread(path+'CornerTest.jpg)
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
cornerMinEigenVal 함수 이용 아이겐 벨류 구해서 임계값 보다 큰 값 반환(이 값이 코너)
eigen = cv2.cornerMinEigenVal(gray,blocksize=5)
eigen 밝기값 분포 확인 eigen이 특정값을 초과하는 좌표 구하기
corners = np.argwhere(eigen > 0.5)
corners[:,[0,1]] = corners[:,[1,0]]
원본 영상을 카피 하여 위의 좌표를 빨간색 점으로 출력
import matplotlib.pyplot as plt
src = cv2.imread(path+'CornerTest.jpg')
gray = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
eigen = cv2.cornerMinEigenVal(gray,blockSize=5)
print('eigen.shape=',eigen.shape)
corners = np.argwhere(eigen > 0.2)
corners[:,[0,1]] = corners[:,[1,0]]
print('len(corners)=',len(corners))
dst = src.copy()
for x,y, in corners:
cv2.circle(dst,(x,y),3,(255,0,0),2)
plt.figure(figsize=(10,10))
imgae1=plt.subplot(1,2,1)
imgae1.set_title('ori')
plt.axis('off')
plt.imshow(src, cmap="gray")
imgae2=plt.subplot(1,2,2)
imgae2.set_title('corner')
plt.axis('off')
plt.imshow(dst, cmap="gray")
plt.show()
'OpenCV' 카테고리의 다른 글
OpenCV - 체스보드 패턴 코너점 검출 (0) | 2022.11.15 |
---|---|
OpenCV - 해리스 코너 ,패스트 코너 검출 (0) | 2022.11.15 |
OpenCV - 영상 코너 검출 (0) | 2022.11.15 |
OpenCV - 영상 공간 필터링 , 모폴로지, 엣지 추출 및 허프 변환 요약 (0) | 2022.11.14 |
OpenCV - 허프 변환 직선 , 원 검출 (0) | 2022.11.14 |