In [1]:
from Custom.mediahelper import show_image_with_pil # 개발자 정의 모듈
from Custom.mediahelper import show_video_as_html # 개발자 정의 모듈
13_1. 이미지 변형(이진화)¶
Threshold¶
In [2]:
import cv2
import numpy as np
img = cv2.imread('../Media/images/book.png', cv2.IMREAD_GRAYSCALE) # 흑백으로 읽기
img = cv2.resize(img, (1200,800)) # img 사이즈 변경
# 두 번째 파라미터: 127은 임계값(threshold). 픽셀 값이 127보다 크면 흰색(255), 작거나 같으면 검정(0)으로 처리.
# 세 번째 파라미터: 255는 최대값(흰색으로 표현되는 값).
# 네 번째 파라미터: cv2.THRESH_BINARY는 이진화 방식.
ret, binary = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# ret: 적용된 임계값(여기서는 입력값 127).
# binary: 이진화된 이미지.
cv2.imshow('img',img)
cv2.imshow('binary',binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
show_image_with_pil(cv2.resize(img, None, fx = 0.5, fy = 0.5), 'img')
show_image_with_pil(cv2.resize(binary, None, fx = 0.5, fy = 0.5), 'binary')
'img'
'binary'
Trackbar(값 변화에 따른 변형 확인)¶
In [3]:
import cv2
import numpy as np
# 이벤트 처리
# cv2.createTrackbar는 트랙바 값이 변경될 때 호출될 콜백 함수가 필요
# 특별한 동작이 필요 없으므로 빈 함수(pass)로 정의
def empty(pos):
# print(pos)
pass
img = cv2.imread('../Media/images/book.png', cv2.IMREAD_GRAYSCALE)
img = cv2.resize(img, (1200,800))
# 트랙바 생성
name = 'Trackbar'
cv2.namedWindow(name) # 'Trackbar'라는 이름의 창을 생성.
# 트랙바(슬라이더)를 생성.
cv2.createTrackbar('threshold', name, 127, 255, empty) # bar 이름, 창의 이름, 초기, 최대값, 이벤트 처리
while True:
# 'threshold' 트랙바의 현재 값
thresh = cv2.getTrackbarPos('threshold', name) # bar 이름, 창의 이름
ret, binary = cv2.threshold(img, thresh, 255, cv2.THRESH_BINARY) # cv2.THRESH_BINARY: 픽셀 값을 이진화(0 또는 255)로 변환.
#if not ret:
#break
cv2.imshow(name, binary)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllWindows()
show_video_as_html('../Media/videos/13_1.mp4')
'Video'
'Python > OpenCV' 카테고리의 다른 글
14. 이미지 변환(팽창) (0) | 2024.11.18 |
---|---|
13_2. 이미지 변형(이진화) (0) | 2024.11.18 |
12. 이미지 변형(원근) (0) | 2024.11.18 |
11. 이미지 변형(흐림) (0) | 2024.11.18 |
10. 이미지 변형(흑백) (0) | 2024.11.18 |