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

Law*_*w.X 11 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()
Run Code Online (Sandbox Code Playgroud)

追溯是

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

Mik*_*iki 11

您可以在此处找到OpenCV类型列表.

type = 17意味着你的图像是一个CV_8SC3,也就是一个3通道矩阵char.但是,threshold只接受

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

这意味着类型必须是CV_8UC1CV_32FC1.

检查shapedtype你的img,调整img的要求.