Попытка использовать opencv изменить размер с изображением подушки - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь прочитать изображение из файла, а затем пытаюсь изменить его размер с помощью библиотеки opencv в Python 3.6.4

Я получаю сообщение об ошибке в этой строке: resized = cv2.resize (src =numpy.array (image), dsize = (9, 8), interpolation = cv2.INTER_CUBIC) TypeError: тип данных src = 17 не поддерживается при запуске кода в Docker, но, похоже, все работает на локальной машине.

Ниже приведен мой код:

pil_image = Image.open(io.BytesIO(filedata))
image = cv2.cvtColor(numpy.asarray(pil_image), cv2.COLOR_BGR2GRAY)
resized = cv2.resize(src = numpy.array(image), dsize = (9, 8), interpolation = cv2.INTER_CUBIC)

В чем может быть проблема с образом докера, я пропускаю какие-либо зависимости?

1 Ответ

0 голосов
/ 30 мая 2018

Проблема не может быть воспроизведена ни в Python 3, ни в Python 2.

type = 17 означает, что ваше изображение имеет тип CV_8SC3, что означает, что оно имеет три канала 8-битных значений со знаком.,Это странно, потому что это означает, что ваше преобразование в оттенки серого не сработало.

Что вы можете сделать, чтобы отладить это, так это следить за формой и типом d ваших массивов.Например, вот так:

im = numpy.asarray(pil_image)
print (im.shape, im.dtype)
image = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
print (image.shape, image.dtype)

Секунда print обычно имеет два числа и uint8 в качестве типа.Если у вас другой вывод, это может указывать на корень вашей проблемы.

...