[python] 파이썬 OpenCV 4 Thresholding 샘플코드

 파이썬과 OpenCV 4를 활용하여 Thresholding 기본 개념을 알아 봅니다. 픽셀의 값은, 특정 threshold 값보다 작으면 0으로, 크면 최대값으로 변환되며 cv.threshold 함수를 이용합니다. 함수의 첫번째 매개변수는 원본 이미지이며 grayscale 형태입니다. 두번째 매개변수는 threshold 값입니다. 원본이미지의 픽셀이 threshold 값을 초과한 경우 어떤 값으로 변경할지는 세번째 매개변수를 통해 설정합니다. 네번째 매개변수는 Thresholding 타입을 의미합니다. 아래는 샘플코드입니다.


import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img = cv.imread('gradient.png',0)

ret,thresh1 = cv.threshold(img,127,255,cv.THRESH_BINARY)
ret,thresh2 = cv.threshold(img,127,255,cv.THRESH_BINARY_INV)
ret,thresh3 = cv.threshold(img,127,255,cv.THRESH_TRUNC)
ret,thresh4 = cv.threshold(img,127,255,cv.THRESH_TOZERO)
ret,thresh5 = cv.threshold(img,127,255,cv.THRESH_TOZERO_INV)

titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

for i in range(6):
    plt.subplot(2,3,i+1)
    plt.imshow(images[i],'gray',vmin=0,vmax=255)
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

plt.show()


아래는 결과입니다.


끝.

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

3상 모터 전력에서 전류 계산하기 (How to Convert Three-Phase Power to Amps)

3선 결선식 센서의 타입 PNP, NPN

[PLC] 서보 모터 브레이크 결선, 왜 릴레이 터미널을 써야 할까?

공압회로 기호

제너 다이오드에 저항을 연결하는 이유

[스마트팜] PLC와 프로세스 제어, 그리고 온실 환경제어

[스마트팜] 농업과 수학, 그 특별한 연결고리

[FA] 제어반 회로설계 : Power Circuits External, 필드배선 터미널

[PLC] 접지(지락) 사고와 단락의 차이점 (The Difference Between a Ground Fault and Short Circuit)