TypeError:不支持src数据类型= 17

时间:2017-01-19 02:40:02

标签: python opencv

我现在在一个程序中尝试将图片从正常更改为二元化。所以我在python上使用opencv,但是当我在家中完成我的问题时将我的代码带到我的办公室它会出现未知错误所以我来这里寻求帮助。

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import cv2
im = Image.open('card.jpg')
img = np.array(im)
if img.ndim == 3:
    img = img[:, :,0]
    plt.gray()
ret, thresh1 = cv2.threshold(img, 50, 255, cv2.THRESH_BINARY)


plt.subplot(222)
plt.imshow(thresh1)
plt.show()

追溯是

  

回溯(最近一次调用最后一次):文件" D:/tensorflow/opencv.py" ;,第12行,在ret中,thresh1 = cv2.threshold(img,50,255,cv2.THRESH_BINARY) TypeError:不支持src数据类型= 17

1 个答案:

答案 0 :(得分:10)

您可以找到OpenCV类型列表here

type = 17表示您的图片是CV_8SC3,也就是char的3通道矩阵。但是,threshold仅接受

  

(单通道,8位或32位浮点)。

表示该类型必须为CV_8UC1CV_32FC1

检查shape的{​​{1}}和dtype,并根据需要调整img