openCV

[파이썬 openCV] - 트랙바로 임계값 조정하기

이진화 [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

결과