我正在尝试从文件中读取图像,然后尝试使用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可能存在什么问题,我是否缺少任何依赖项?
答案 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
作为类型。如果你有不同的输出,这可能表明问题的根源。