Python numpy.ndarray对象没有属性';阅读';(和搜索)

Python numpy.ndarray对象没有属性';阅读';(和搜索),python,numpy,deep-learning,object-detection,Python,Numpy,Deep Learning,Object Detection,我得到的错误是numpy.ndarray对象没有属性“read”和numpy.ndarray对象没有属性“seek”。我试着在网上寻找答案,但失败了 我想做的是检测视频中的物体——在这种情况下,我想检测斑马 我拿了一个图像检测器,我正试图把它应用到视频中。我试图在视频的每一帧上循环,并最终将该帧传递给函数draw\u box 以下是错误消息: Traceback (most recent call last): File "/Users/ysquared/Library/Python/3.7

我得到的错误是
numpy.ndarray对象没有属性“read”
numpy.ndarray对象没有属性“seek”
。我试着在网上寻找答案,但失败了

我想做的是检测视频中的物体——在这种情况下,我想检测斑马


我拿了一个图像检测器,我正试图把它应用到视频中。我试图在视频的每一帧上循环,并最终将该帧传递给函数
draw\u box

以下是错误消息:

Traceback (most recent call last):
  File "/Users/ysquared/Library/Python/3.7/lib/python/site-packages/PIL/Image.py", line 2770, in open
    fp.seek(0)
AttributeError: 'numpy.ndarray' object has no attribute 'seek'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 204, in <module>
  File "<string>", line 118, in load_image_pixels
  File "/Users/ysquared/Library/Python/3.7/lib/python/site-packages/keras_preprocessing/image/utils.py", line 110, in load_img
    img = pil_image.open(path)
  File "/Users/ysquared/Library/Python/3.7/lib/python/site-packages/PIL/Image.py", line 2772, in open
    fp = io.BytesIO(fp.read())
AttributeError: 'numpy.ndarray' object has no attribute 'read'


seek
read
是打开的文件可以做的事情。我从回溯推断,这个错误发生在

image, image_w, image_h = load_image_pixels(frame, (input_w, input_h))
行,并且问题必须出现在
框架
参数中。该函数需要一个打开的文件或文件名,但
frame
显然是numpy数组。其定义见上文:

(grabbed, frame) = vs.read()
所以它是mp4中的一个帧,一个数组,而不是一个文件


因此,您需要为
load\u image\u pixels
提供一个文件名,或者需要使用其他一些函数来处理
frame
数组

一般的网络搜索对这种错误没有帮助。它既过于宽泛又过于具体

没有属性
Python中的错误很常见。这意味着该点上的对象具有不同于程序员预期的类。例如,如果
cv
读取找不到文件,它将返回
None
,而不是图像。您不能像处理图像一样处理
None
。但是使用数组而不是文件名的特殊组合是独一无二的


在进行web搜索之前,请尝试了解错误发生的位置以及所涉及的变量。检查它的实际性质(类型、形状等)和对代码的期望,以及调用的函数。

以下是我解决问题的方法(即消除错误):


##[..] 
cv2.imwrite(“framex.jpg”,frame)
filename=“framex.jpg”
image,image\u w,image\u h=加载\u image\u像素(文件名,(输入\u w,输入\u h))
##[..]
框架=绘制框(文件名、v框、v标签、v分数)
##[..]

如何将帧(如您所说,是numpy数组)转换为文件(如jpg文件)?所以我想弄明白的是如何将帧(一个numpy数组)转换成jpg文件,这样
load\u image\u pixels
就可以使用正确的类型。我已经尝试了从keras.preprocessing.Image导入的
Image.fromarray
array\u to\u img
。如果您能帮助我,我将不胜感激。如果
已经是数组,为什么您需要使用
加载图像\u像素
?为什么将其保存为文件只是为了再次加载到数组或
keras
结构中?您是否正在学习针对不同类型输入的教程?
load\u image\u pixels
还会返回图像的高度和宽度以及图像。图像的高度和宽度被另一个函数占用。这就是为什么我认为我需要使用
load\u image\u pixels
。你不能从数组中推断高度和宽度吗?函数
draw\u box
使用的是文件名而不是numpy数组。与加载图像像素不同,我不能修改这个。要检测对象,我需要
绘制框
。所以我需要将numpy数组转换为jpg文件。