确保持续更新的图像文件是安全的

时间:2014-08-04 15:41:50

标签: python image camera python-imaging-library simplecv

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

相机程序将连续捕捉图像并将图像保存到某个位置(重写旧图像),我每隔30毫秒就要调整一次。分析程序每100 ms左右接收一次图像。现在,我关心的问题是,如果分析程序试图在相机程序正好写入时读取图像,则会出现错误。

我相当肯定放置一个异常语句来捕获OSError并让它再试一次就足够了,但我觉得这有点强大。我还想过让相机程序写一个数字(比方说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")

1 个答案:

答案 0 :(得分:0)

最简单的方法是打开具有独占访问权限的文件,这样在使用它的过程中没有人可以打开它。有关实施细节,请参阅What is the best way to open a file for exclusive access in Python?

请务必file.close()with <file_open> as f尽快关闭文件,以尽量减少对“持续更新”代理的干扰。是的,并确保在这些代理中处理文件锁定案例。