[ Python OpenCV ] 파이썬 오픈씨브이 경계 라인 검출 캐니 - cv2.Canny
1. 캐니 에지 4단계 구성 개념 및 이론
- 노이즈 제거
- 명암 찾기
- 억제 시키기
- 임계값 찾기
2. 1단계 가우시안 필터 이용
- 5x5 가우시안 필터로 이미지 노이즈 제거
3. 2단계 명암 찾기
- Sobel 커널로 필터 도함수 찾기
<소벨 사용>
4. 3단계 억제 하기
- 그래디언트 크기와 방향을 얻은 후 가장자리 픽셀 제거
import cv2 as cv
import numpy as np
# 이미지 가져오기
matImage = cv.imread('D:\VSCode\cat.jpeg')
# 이미지 보기
cv.imshow('image', matImage)
# 이미지 그레이 변환
matGray = cv.cvtColor(matImage, cv.IMREAD_GRAYSCALE)
# x방향으로 소벨필터 적용
dx = cv.Sobel(matGray, cv.CV_32F, 1, 0)
# y방향으로 소벨필터 적용
dy = cv.Sobel(matGray, cv.CV_32F, 0, 1)
# 그래디언트 구하기
Magnitude = cv.magnitude(dx, dy)
Magnitude = np.clip(Magnitude, 0, 255).astype(np.uint8)
# 이미지 보기
cv.imshow('Magnitude', Magnitude)
7. 캐니 소스 코드
import cv2 as cv
import numpy as np
# 이미지 가져오기
matImage = cv.imread('D:\VSCode\cat.jpeg')
# 이미지 보기
cv.imshow('image', matImage)
# 캐니
canny100 = cv.Canny(matImage, 0, 100)
canny200 = cv.Canny(matImage, 100, 200)
canny250 = cv.Canny(matImage, 200, 255)
# 캐니 출력
cv.imshow('matImage', matImage)
cv.imshow('canny100', canny100)
cv.imshow('canny200', canny200)
cv.imshow('canny250', canny250)
# 입력 대기
cv.waitKey(0)
==========
댓글
댓글 쓰기