Ошибка использования адаптивного порогового значения на полутоновом изображении - PullRequest
0 голосов
/ 10 октября 2018

Я прочитал изображение и преобразовал его в оттенки серого, используя эту функцию:

def rgb2gray(img):
    if len(img.shape)==3 & img.shape[-1] == 3:  # img is RGB
        return cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    return img

Теперь я пытаюсь преобразовать мое изображение в двоичный файл, используя это:

def apply_threshold(img):
    if len(np.unique(img))==2: #img is already binary
        return img
    gray_img=rgb2gray(img)
    _,binary_img=cv2.threshold(gray_img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
return binary_img

но я получаю эту досадную ошибку:

cv2.error: OpenCV(3.4.1) C:\projects\opencv-python\opencv\modules\imgproc\src\thresh.cpp:1406: error: (-215) src.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3)) in function cv::threshold

Я не могу понять, почему, поскольку gray_img точно является серой шкалой!Я посмотрел на этот вопрос, и в верхнем ответе salvador daly было предложено, чтобы входное изображение не было серым, но я проверял его несколько раз, и это точно.

Любойпомощь будет оценена!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...