Opencv: ошибка: (-210) в пороге функции - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь оценить ограничивающую рамку для простых изображений на основе массива

ret,thresh = cv.threshold(img1[:,:,244],10,255,0)

Вывод выглядит так:

The thresholded image

Далее я делаю это

im2,contours,hierarchy = cv.findContours(thresh, 1, 2)

Я получаю ошибку

FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function cvStartFindContours_Impl

Итак, я преобразую в

im2,contours,hierarchy = cv.findContours(thresh.astype(np.int8), 1, 2)

Теперь я получаю ошибку

error: (-210)  in function threshold

Как я могу устранить ошибку?Являются ли их альтернативы, как мне получить наклонную ограничивающую рамку для примера?

Массив до преобразования в np.uint8:

array([[0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.],
   ...,
   [0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.],
   [0., 0., 0., ..., 0., 0., 0.]])

Массив после преобразования:

array([[0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   ...,
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0],
   [0, 0, 0, ..., 0, 0, 0]], dtype=int8)

1 Ответ

0 голосов
/ 12 февраля 2019

Преобразование:

thresh = np.array([255, 0])
thresh.astype(np.int8) #array([-1,  0], dtype=int8)

дает неправильный ответ из-за переполнения.

Вместо этого следует использовать:

thresh.astype(np.uint8) #array([255,   0], dtype=uint8)

, чтобы результат былправильный.

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