오답노트

[openCV] cv2.adaptiveThreshold CV_8UC1 error 본문

파이썬

[openCV] cv2.adaptiveThreshold CV_8UC1 error

장비 정 2021. 11. 11. 09:30

cv2 를 통해 로드한 이미지를 adaptiveThreshold 를 통해 이진화를 시켜보려고 해봤는데

 

cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\thresh.cpp:1676: error: (-215:Assertion failed) src.type() == CV_8UC1 in function 'cv::adaptiveThreshold'

 

라는 에러와 함께 이미지가 제대로 바뀌지 않았다.

 

import cv2 as cv

img = cv.imread("path/image.jpg")
img = cv.resize(img, dsize=(0,0), fx=0.5, fy=0.5, interpolation=cv.INTER_AREA)

img_thre = cv.adaptiveThreshold(img, 255, cv.ADAPTIVE_GAUSSIAN_C, cv.THRESH_BINARY, 11, 2)

에러가 떴을 당시의 내 코드는 이랬었는데,

조금 찾아보니 adaptiveThreshold 는 gray scale 의 이미지만 input 으로 받는다고 했다.

 

import cv2 as cv

img = cv.imread("path")
img = cv.resize(img, dsize=(0,0), fx=0.5, fy=0.5, interpolation=cv.INTER_AREA)

img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
img_thre = cv.adaptiveThreshold(img_gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 11, 2)

그 후 로드 한 원본 이미지를 gray scale 로 바꿔준 뒤 이미지를 넣어주니 제대로 동작하였다.

 

힘들게 adaptiveThreshold 로 이진화 시켜 얻은 이미지 자체는 그렇게 마음에 들진 않았다.