728x90
Canny
- 가우시안(Gaussian) 필터를 이용하여 노이즈를 제거
- 소벨(Sobel) 필터를 이용하여 Gradient 방향
- 비최대치 억제로 Gradient 방향에서 최대치만 검출
- Thresholding 으로 경계값(min, max)을 지정해서 경계 지정
cv2.Canny(src, threshold1, threshold2, edgets=None, apertureSize=None, L2gradient=None) -> edges
- src: 입력 이미지
- threshold1, threshold2: 하단, 상단 임계값
- edges: edge 이미지
- apertureSize: 소벨(Sobel) 필터
- L2gradient: True(L_2 norm), False(L_1 norm)
import cv2
import os
import numpy as np
path = os.path.join('img', 'img.jpg')
src = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
dst = src.copy()
cv2.imshow('src', src)
cv2.imshow('Canny', dst)
th1, th2 = 0, 0
def onChange_th1(k):
global th1
if k > 0:
th1 = k
dst = cv2.Canny(src, th1, th2)
cv2.imshow('Canny', dst)
def onChange_th2(k):
global th2
if k > 0:
th2 = k
dst = cv2.Canny(src, th1, th2)
cv2.imshow('Canny', dst)
cv2.createTrackbar('th1', 'Canny', 0, 300, onChange_th1)
cv2.createTrackbar('th2', 'Canny', 0, 300, onChange_th2)
cv2.waitKey()
cv2.destroyAllWindows()
트랙바 2개를 이용해서 비교하기 쉽게 했습니다.
'OpenCV' 카테고리의 다른 글
파이썬 OpenCV 모폴로지(Morphology) -2 : Gradient / Tophat / Blackhat (0) | 2020.07.26 |
---|---|
파이썬 OpenCV 모폴로지(Morphology) -1: 침식(erode) / 팽창(dilate) /Opening & Closing (0) | 2020.07.26 |
파이썬 OpenCV 미분 필터링 -2 : Sobel / Scharr / Laplacian (0) | 2020.07.25 |
파이썬 OpenCV 미분 필터링 -1 (0) | 2020.07.25 |
파이썬 OpenCV 기하학적 변환 알아보기 -3 : Affine / Perspective Transformation (0) | 2020.07.25 |