Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 确保持续更新的图像文件可以安全打开_Python_Image_Camera_Python Imaging Library_Simplecv - Fatal编程技术网

Python 确保持续更新的图像文件可以安全打开

Python 确保持续更新的图像文件可以安全打开,python,image,camera,python-imaging-library,simplecv,Python,Image,Camera,Python Imaging Library,Simplecv,情况是这样的:我有两个Python程序,一个用来控制uEye摄像头模块,利用SimpleCV库,另一个用来对图像进行一些分析。它们分开的原因是SimpleCV是2.7,而我需要在分析阶段使用的一些模块仅适用于3.X 摄像头程序将连续捕获图像并将其保存到某个位置(重写旧图像),我将该位置定为大约每30毫秒一次。分析程序大约每100毫秒接收一张图像。现在,我关心的问题是,如果分析程序在相机程序写入图像的同时试图读取图像,它将引发错误 我相当肯定,放置一个异常语句来捕获操作错误并让它简单地重试就足够了

情况是这样的:我有两个Python程序,一个用来控制uEye摄像头模块,利用SimpleCV库,另一个用来对图像进行一些分析。它们分开的原因是SimpleCV是2.7,而我需要在分析阶段使用的一些模块仅适用于3.X

摄像头程序将连续捕获图像并将其保存到某个位置(重写旧图像),我将该位置定为大约每30毫秒一次。分析程序大约每100毫秒接收一张图像。现在,我关心的问题是,如果分析程序在相机程序写入图像的同时试图读取图像,它将引发错误

我相当肯定,放置一个异常语句来捕获操作错误并让它简单地重试就足够了,但我觉得这有点强制。我还考虑过让摄像头程序编写大量(比如说100)图像,以了解两者同时处理同一文件的可能性,但这似乎不可靠。在一个完美的世界里,我可以抛弃SimpleCV,使用一个3.X模块,只允许按顺序进行写入和读取,但我还没有找到一个适用于相机的合适替代品

有没有关于避免这个问题的最有效、最稳健的方法的想法

以下是(简化的)摄像头程序:

from SimpleCV import *

cam = Camera(0)
while True:
    img = cam.getImage()
    img.save("nav.jpg")
以及分析程序的重要部分:

from PIL import Image

img = Image.open("nav.jpg")

最简单的方法是以独占访问权限打开文件,这样在您使用该文件的过程中,没有人可以打开它。有关实现的详细信息,请参阅


确保
file.close()
使用as f
尽快关闭文件,以最大限度地减少对“持续更新”文件的代理的干扰。是的,请确保在这些代理中处理文件锁定的情况。

您将以二进制模式打开一个图像文件(在UNIX中没有区别,但仍然如此)。我确实遇到了在windows下在python上操作uEye摄像头的问题,而且它实际上无法工作,而您显然已经成功地做到了这一点。我贴了这个问题(),也许你可以帮我。