In [1]:
from Custom.mediahelper import show_image_with_pil # 개발자 정의 모듈
from Custom.mediahelper import show_video_as_html # 개발자 정의 모듈
In [2]:
import cv2
img = cv2.imread('../Media/images/snowman.png')
img = cv2.resize(img, None, fx = 0.5, fy = 0.5) # 이미지 크기 50% 줄임
canny = cv2.Canny(img, 150, 200) # min value 하위 임계값, max value 상위 임계값
cv2.imshow('img',img)
cv2.imshow('canny',canny)
cv2.waitKey(0)
cv2.destroyAllWindows()
show_image_with_pil(img, 'img')
show_image_with_pil(canny, 'canny')
'img'
'canny'
Trackbar 로 테스트¶
In [3]:
import cv2
def empty(pos):
pass
img = cv2.imread('../Media/images/snowman.png')
img = cv2.resize(img, None, fx = 0.5, fy = 0.5)
name = "Trackbar"
cv2.namedWindow(name)
cv2.createTrackbar('threshold1', name, 0, 255, empty) # 하위 임계값 조정 트랙바
cv2.createTrackbar('threshold2', name, 0, 255, empty) # 상위 임계값 조정 트랙바
while True:
# 현재 트랙바에서 설정된 값을 가져옴.
threshold1 = cv2.getTrackbarPos('threshold1', name)
threshold2 = cv2.getTrackbarPos('threshold2', name)
# cv2.Canny는 이미지의 밝기 변화(그래디언트)를 기반으로 엣지를 검출하는 알고리즘.
# 두 개의 임계값(threshold1, threshold2)을 사용하여 엣지를 결정:
# threshold1(하위 임계값)이 값보다 작은 그래디언트 강도를 가진 픽셀은 엣지로 간주하지 않음. (엣지 < threshold1)
# threshold2(상 임계값)이 값을 초과하는 강도를 가진 픽셀은 확실한 엣지로 간주. (엣지 >= threshold2)
# (엣지 아님 < threshold1 <= 약한 엣지 < threshold2 <= 확실한 엣지)
# threshold1이 threshold2보다 클 경우, Canny Edge Detection의 동작이 의도대로 이루어지지 않음
# 임계값 조정:
# threshold1, threshold2 값을 조합하여 엣지의 감도를 조정할 수 있음.
# 하위 임계값이 너무 낮으면 노이즈를 많이 포함할 수 있음.
# 상위 임계값이 너무 높으면 중요한 엣지가 검출되지 않을 수 있음.
canny = cv2.Canny(img, threshold1, threshold2)
cv2.imshow('img',img)
cv2.imshow(name,canny)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllWindows()
show_video_as_html('../Media/videos/16_1.mp4')
'Video'
'Python > OpenCV' 카테고리의 다른 글
17. 이미지 검출(윤곽선) (0) | 2024.11.19 |
---|---|
15. 이미지 변환(열림 & 닫힘) (0) | 2024.11.19 |
14. 이미지 변환(팽창) (0) | 2024.11.18 |
13_2. 이미지 변형(이진화) (0) | 2024.11.18 |
13_1. 이미지 변형(이진화) (0) | 2024.11.18 |