이진화 [Binarization]
이진화는 그레이 스케일의 이미지를 바이너리(binary) 이미지로 변환하는 방법이다. 임계값(thershold) 기준으로 그레이 스케일의 이미지를 흰, 검 영역에 표현하게 된다. openCV로 윈도위에 트랙바를 추가해서 원하는 영역의 임계값을 쉽게 추출할 수 있다.
구현
import numpy as np
import cv2 as cv
def on_trackbar(x):
"""
callback func for trackbar
"""
pass
img_color = cv.imread('sample.png', cv.IMREAD_COLOR)
# gray scale
img_gray = cv.cvtColor(img_color, cv.COLOR_BGR2GRAY)
cv.imshow('Graysacle', img_gray)
cv.namedWindow('Binary')
cv.createTrackbar("thershold", "Binary", 0, 255, on_trackbar)
cv.setTrackbarPos('thershold', 'Binary', 125)
# tracbar 반영
while True:
thresh = cv.getTrackbarPos('thershold', 'Binary')
(ret, img_binary) = cv.threshold(img_gray, thresh, 255, cv.THRESH_BINARY_INV)
cv.imshow('Binary', img_binary)
# esc키 누를 때 종료
if cv.waitKey(1) & 0xFF == 27:
break
'openCV' 카테고리의 다른 글
[C++ openCV 도형 인식] 게임 매직 타일 매크로 [2] (완) (0) | 2021.01.28 |
---|---|
[파이썬 openCV 도형 인식] 게임 매직타일 매크로 [1] (0) | 2021.01.27 |
[Python openCV] 유로 트럭2 반자율주행 (1) | 2021.01.25 |
[파이썬 openCV] - 픽셀, 컬러와 흑백 이미지 (0) | 2021.01.20 |
[파이썬 openCV] - 이미지 데이터 공유 & 복사 (0) | 2021.01.19 |