Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python m不是numpy数组,也不是标量_Python_Opencv_Python Imaging Library_Pillow_Cv2 - Fatal编程技术网

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或3D
array
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