gpt4 book ai didi

python - 如何将 Pi Camera 提供的图像输入直接存储到变量而不是文件?

转载 作者:行者123 更新时间:2023-12-05 06:27:55 24 4
gpt4 key购买 nike

我想将我的 pi 相机提供的输入直接存储到一个变量中,而不是将其存储在一个文件中。我想这样做是为了减少 pi 的处理能力,因为我正在从事一个自主汽车项目并且需要大量处理。当我尝试将图像存储到变量时,出现以下错误 -

AttributeError: 'int' object has no attribute 'name'

During handling of the above exception, another exception occurred:

'Format must be specified when output has no filename')
picamera.exc.PiCameraValueError: Format must be specified when output has no filename

我的代码-

img = 1
camera = picamera.PiCamera()
camera.capture(img)
time.sleep(0.0001)
img = cv2.imread(img)
cv2.imshow('img', img)
cv2.waitKey(1)

我已将 img 作为变量来存储捕获的图像,但它不起作用。如果有任何图书馆可以为我做这件事,请告诉我。

预先感谢您的友好回复。

最佳答案

遇到了同样的问题,但网络上提出的答案对我的问题来说不够明确。另外,这是我在研究过程中得出的第一个结果,但还没有答案。希望我的总结能帮助正确回答这个问题。这是我的想法:

camera.capture(output, 'jpeg', use_video_port=True)

这个语句接受一个output,一个可选的output type(如果无法从输出名称中找出格式,则必须指定),以及您是否将使用视频端口进行输出。output 必须 是一个类似字节的对象。所以这意味着我们应该给它一个 BytesIO 对象。通过这样做,我们得到了所需输出的流。

但是,如果您尝试立即处理这个流,您会注意到似乎没有数据。这是因为内部指针指向流的末尾。我们必须首先将它移动到 myStream.seek(0) 的开头。

完成此操作后,我们就有了一个文件,我们可以对其进行适当的工作。您可以将其发送到服务器,在其上使用 PIL 功能或任何您想要的。

以上总结:

my_stream = BytesIO() #create a bytes object so the capture can output to it
camera.capture(my_stream, 'jpeg', use_video_port=True) #output the camera feed to my_stream
my_stream.seek(0) #go to the start of the stream in order to do work on it

例如,在我的例子中,我可以直接使用 await websocket.send(my_stream)

将其发送到我的 websocket 服务器

关于python - 如何将 Pi Camera 提供的图像输入直接存储到变量而不是文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54869329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com