尝试使用pillow图像使用opencv resize

时间:2018-05-18 23:41:43

标签: python opencv image-resizing pillow cv2

我正在尝试从文件中读取图像,然后尝试使用Python 3.6.4中的opencv库来调整它的大小

我在这一行收到错误: resized = cv2.resize(src = numpy.array(image),dsize =(9,8),interpolation = cv2.INTER_CUBIC) TypeError:在docker中运行代码时不支持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)

docker image可能存在什么问题,我是否缺少任何依赖项?

1 个答案:

答案 0 :(得分:0)

无法在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作为类型。如果你有不同的输出,这可能表明问题的根源。