我正在通过Python 2.7中的简单套接字程序将Raspberry Pi中的JPEG图像流发送到我的MBP。
当我从MBP上的流中读取图像时,它会在预览中打开,并为每个单独的图像打开一个新的预览窗口。我有一个大约2/3的fps,显然每秒2/3个新窗口是不可能的。
如何只打开一个预览窗口并简单地覆盖显示的图像? OpenCV会是最好的方式吗?如果是这样,我不确定如何。
以下是我阅读流并显示图像的方法:
image_len = struct.unpack('<L', connection.read(struct.calcsize('<L')))[0]
if not image_len:
break
image_stream = io.BytesIO()
image_stream.write(connection.read(image_len))
image_stream.seek(0)
image = Image.open(image_stream)
image.show()
答案 0 :(得分:1)
OS X Preview似乎每隔一段时间自动重新加载打开的图像(总是在窗口获得焦点时),但Image.show
每次使用时都会保存一个新的临时文件。我建议将每个新帧保存到同一个文件中,然后将subprocess.call
与OS X open
命令一起使用。
据说,the documentation注意到Image.show主要用于调试目的。对于具有超过几个FPS的视频,您可能需要其他内容。一种解决方案是使用WebSockets的HTML界面,可能使用类似AutoBahn的内容。