import cv2
import matplotlib.pyplot as plt
%matplotlib inline
flat_chess = cv2.imread('../DATA/flat_chessboard.png')
plt.imshow(flat_chess,cmap='gray')
그리드 검출 시 그리드가 본질적으로 체스판같이 정형화되어야함
found, corners = cv2.findChessboardCorners(flat_chess,(7,7))
그리드 사이즈 지정
전체 이미지가 8*8라면, 끝에 있는 가장자리를 탐지하기 위해 7*7로 지정함
found는 체스보드 타입의 모서리를 찾았는지를 나타냄
if found:
print('OpenCV was able to find the corners')
else:
print("OpenCV did not find corners. Double check your patternSize.")
found 변수를 쓸때 'draw chessboard corners'를 실행할지 묻는 여부에 'if' 문장을 활용하는 게 유용
corners.shape
(49, 1, 2)
flat_chess_copy = flat_chess.copy()
cv2.drawChessboardCorners(flat_chess_copy, (7, 7), corners, found)
array([[[158, 206, 255],
[158, 206, 255],
[158, 206, 255],
...,
[ 71, 139, 209],
[ 71, 139, 209],
[ 71, 139, 209]],
[[158, 206, 255],
[158, 206, 255],
[158, 206, 255],
...,
[ 71, 139, 209],
[ 71, 139, 209],
[ 71, 139, 209]],
[[158, 206, 255],
[158, 206, 255],
[158, 206, 255],
...,
[ 71, 139, 209],
[ 71, 139, 209],
[ 71, 139, 209]],
...,
[[ 71, 139, 209],
[ 71, 139, 209],
[ 71, 139, 209],
...,
[158, 206, 255],
[158, 206, 255],
[158, 206, 255]],
[[ 71, 139, 209],
[ 71, 139, 209],
[ 71, 139, 209],
...,
[158, 206, 255],
[158, 206, 255],
[158, 206, 255]],
[[ 71, 139, 209],
[ 71, 139, 209],
[ 71, 139, 209],
...,
[158, 206, 255],
[158, 206, 255],
[158, 206, 255]]], dtype=uint8)
plt.imshow(flat_chess_copy)
openCV가 코너와 행을 표시하고 다른 색을 표시한 것도 볼 수 있음
dots = cv2.imread('../DATA/dot_grid.png')
plt.imshow(dots)
점을 이루어진 그리드
found, corners = cv2.findCirclesGrid(dots, (10,10), cv2.CALIB_CB_SYMMETRIC_GRID)
10*10 그리드 마지막 매개변수 실제 검색 방법-> 단순히 원 그리드를 찾을 때는 이 방법이다.
found
True 라고 뜨면 위에 그림을 그릴 수 있음
dbg_image_circles = dots.copy()
cv2.drawChessboardCorners(dbg_image_circles, (10, 10), corners, found)
array([[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
...,
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]],
[[255, 255, 255],
[255, 255, 255],
[255, 255, 255],
...,
[255, 255, 255],
[255, 255, 255],
[255, 255, 255]]], dtype=uint8)
plt.imshow(dbg_image_circles)
출처: Udemy X KMOOC OpenCV 및 딥러닝을 이용한 Computer Vision 파이썬
'Deep Learning > Computer Vision' 카테고리의 다른 글
feature matching (0) | 2023.08.10 |
---|---|
Contour Detection (0) | 2023.08.09 |
엣지 검출 (0) | 2023.08.09 |
코너 검출 (0) | 2023.08.08 |
템플릿 매칭 (0) | 2023.08.08 |