상세 컨텐츠

본문 제목

OpenCV Trackbar를 이용한 Canny

coding/OpenCV

by golduny_zoo 2021. 4. 19. 17:45

본문

728x90

수치를 정확하게 판단하기 힘들때 사용하면 좋다. 

범위를 정해주고 화면으로 보면서 조절할 수 있다. 

import cv2 
import numpy as np

highThreshold = 100
lowThreshold = 50

maxThreshold = 1000

apertureSizes = [3, 5, 7]
maxapertureIndex = 2
apertureIndex = 0

blurAmount = 0
maxBlurAmount = 20

# 트랙바용 함수 
# 캐니 에지 적용하는 함수
def applyCanny():
    if blurAmount > 0 :
        blurredSrc = cv2.GaussianBlur(src, (2*blurAmount +1, 2*blurAmount+1), 0  )
    else :
        blurredSrc = src.copy()
    
    apertureSize = apertureSizes[apertureIndex]

    edges = cv2.Canny(blurredSrc, lowThreshold, highThreshold, apertureSize = apertureSize)

    cv2.imshow("Edges", edges)

# 로우 쓰레숄드 적용하는 함수
def updateLowThreshold(*args) :
    global lowThreshold
    lowThreshold = args[0]
    applyCanny()

# 하이 쓰레숄드 적용하는 함수
def updateHighThreshold(*args):
    global highThreshold
    highThreshold = args[0]
    applyCanny()

# 블러 적용하는 함수
def updateBlurAmout(*args) :
    global blurAmount 
    blurAmount = args[0]
    applyCanny()

# aperture 적용하는 함수
def updateApertureIndex(*args) :
    global apertureIndex
    apertureIndex = args[0]
    applyCanny()


src = cv2.imread('data/images/sample.jpg', 0)

edges = src.copy()

cv2.imshow('Edges', src)

cv2.namedWindow('Edges', cv2.WINDOW_AUTOSIZE)

# 로우 쓰레숄드에 대한 컨트롤러를 트랙바에 붙인다.
cv2.createTrackbar("Low Threshold", "Edges", lowThreshold, maxThreshold, updateLowThreshold)
# 하이 쓰레숄드에 대한 컨트롤러를 트랙배에 붙인다.
cv2.createTrackbar("High Threshold", "Edges", highThreshold, maxThreshold, updateHighThreshold)
# aperture 를 트랙바에 붙인다.
cv2.createTrackbar("Aperture Size", "Edges", apertureIndex, maxapertureIndex, updateApertureIndex)
# 블러 컨트롤러를 트랙바에 붙인다.
cv2.createTrackbar("Blur", "Edges", blurAmount, maxBlurAmount, updateBlurAmout)

cv2.waitKey()
cv2.destroyAllWindows()

 

'coding > OpenCV' 카테고리의 다른 글

OpenCV lane_detection  (0) 2021.04.22
OpenCV 끊어진 윤곽선 연결 Contours  (0) 2021.04.19
OpenCV filter를 이용하여 sharp한 이미지  (0) 2021.04.19
OpenCV Canny Edge Detection  (0) 2021.04.19
OpenCV Laplacian  (0) 2021.04.19

관련글 더보기