Programming Error/Python

[OpenCV 오류] THRESH_OTSU mode: > 'src_type == CV_8UC1 || src_type == CV_16UC1'

Barca 2021. 9. 24. 22:36
import cv2

img = cv2.imread('./image1.png')
_, thresh = cv2.threshold(img, 0, 255.0, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

 

보통 이미지의 특정 포인트를 탐지하거나 Segmentation Task를 다루다보면 threshold를 기준으로 Binary 이미지로 바꾸어주는 threshold 함수를 자주 접할 수 있을 것입니다. 보통 Binary 이미지를 만들 때, 특정 threshold (임계값)를 사람이 지정해 주어야하는데, 오츠 이진화 방법은 threshold를 지정하지 않고 모든 경우의 수 중에서 적절한 바이너리한 두 부류의 명암 분포가 균일할 때를 선택해주는 방법으로 자주 사용됩니다 (방법에 대한 더 자세한 내용은 다음 블로그를 참고하시면 좋을 것 같습니다). 따라서, 저도 cv2.THRESH_OTSU 라는 인자를 넣어주었습니다. 이 때, 아래와 같은 오류가 발생하였는데요.

 

THRESH_OTSU mode: > 'src_type == CV_8UC1 || src_type == CV_16UC1'

 

이는 image가 3채널이어서 발생한 오류였습니다. OTSU Method같은 경우에는 단일 채널에서만 지원을 하는 것을 확인했습니다. 따라서, 이미지 3개의 채널 중 하나만을 사용하거나 각각의 채널별로 해당 방법을 수행한 후 Task에 따라 적절히 합치는 방향으로 사용하시면 될 것 같습니다.