Python m不是numpy数组,也不是标量
我在尝试运行代码时遇到以下错误-这就是我遇到的错误:Python m不是numpy数组,也不是标量,python,opencv,python-imaging-library,pillow,cv2,Python,Opencv,Python Imaging Library,Pillow,Cv2,我在尝试运行代码时遇到以下错误-这就是我遇到的错误: import cv2 import numpy as np from PIL import Image img = Image.open("test.jpg") imgfilename = img.filename imgb,imgg,imgr = cv2.split(img) count = 0 文件“WB.py”,第9行,在 imgb、imgg、imgr=cv2.分割(img) TypeError:m不是numpy数组,也不是标量
import cv2
import numpy as np
from PIL import Image
img = Image.open("test.jpg")
imgfilename = img.filename
imgb,imgg,imgr = cv2.split(img)
count = 0
文件“WB.py”,第9行,在
imgb、imgg、imgr=cv2.分割(img)
TypeError:m不是numpy数组,也不是标量
通常不应该将PIL与numpy一起使用,这些库之间没有太多交互
从numpy(和opencv)的角度来看,图像只是任意给定类型的2D或3Darray
s(2D表示灰度,3D表示颜色)。另外,cv2
默认使用BGR
从图像开始,而不是从图像开始。打开(路径)为此,应使用中提供的拆分功能
Image.split()
这是因为图像在OpenCV和PIL中的解释不同。因此,您不能将这些包中可用的函数互换使用。我不会说它们“通常不应该将PIL与numpy一起使用”——PIL只将图像作为
PIL Image
类型的对象保存,而numpy将图像作为numpy ndarray
类型的对象保存np.array()
完美地将图像转换为数组,而且由于PIL支持比OpenCV
更多的图像类型(例如.gif
),并且是一个非常常见的库,我在这里和那里结合使用了它们。如果你想坚持使用PIL image类,那么是的——使用PIL函数。不过,由于OP之前曾发布过一篇关于OpenCV的文章,也许您可以对这个答案进行扩展,提供一些关于使用OpenCV函数的建议,或者如何使用numpy数组在两者之间工作的建议。
File "WB.py", line 9, in <module>
imgb,imgg,imgr = cv2.split(img)
TypeError: m is not a numpy array, neither a scalar