Попытка использовать изменение размера opencv с изображением подушки

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

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

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

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)

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


person Rhea    schedule 18.05.2018    source источник


Ответы (1)


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

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

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

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

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

person Andriy Makukha    schedule 30.05.2018