OpenCV

Canny

728x90
import cv2
import numpy as np

#캐니 커널은 그레이스케일로 엣지를 효율성 때문에 판단한다.

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

cv2.imshow('img',img)

#threshold값에 따라 결과가 달라진다.
threshold_1 = 130 #high : 0~255중에 설정
threshold_1 = 100 #low

result =cv2.Canny(img, threshold_1,threshold_1)

cv2.imshow('result', result)

cv2.waitKey(0)
cv2.destroyAllWindows()

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()

728x90

'OpenCV' 카테고리의 다른 글

road_marking_detection  (0) 2021.04.20
find contures  (0) 2021.04.20
sharpen  (0) 2021.04.20
laplacian  (0) 2021.04.20
sobel  (0) 2021.04.20