1
我写了使用的OpenCV和videowriter如何释放“孤儿”的OpenCV videowriter
我打电话从脚本这个功能我Spyder的内/ IPython的IDE生成的视频输出功能。在调试过程中,该功能仍然存在问题,有时会在不释放视频文件的情况下中止。我试图实现try/exception,但仍然有未被捕获的实例。
每次发生这种情况时,输出视频文件保持锁定状态,例如,我无法使用Windows资源管理器删除它,或者使用相同的文件名作为另一个程序运行的输出,直到关闭并重新启动spyder ide。
有没有办法在不关闭IDE的情况下查找并释放所有这些'孤立'videowriter对象?
这里是我的代码的虚拟例如:
import cv2
import numpy as np
def video_processing(path):
fourcc=cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
fps=30
videoOut = cv2.VideoWriter(path,fourcc,fps,(100 ,100))
#some processing:
for i in range(10):
#result=np.ones((100,100))
#deliberately cause an error by providing misfit result
#result=np.ones((101,101))
#on some systems, dtype needs to be specified as pointed out in one answer
result=np.ones((101,101),dtype = np.uint8)
videoOut.write(result)
dtype = np.uint8在我的系统上是不需要的(opencv 3.0,win7 64bit上的python 2.7 64bit)。现在,当我发生错误时,例如通过生成对于videoWriter来说太大的结果数组,我收到一条错误消息,并且输出文件被锁定。 – jlarsch
我在Windows 10 64位上使用python 2.7.11 64位OpenCV 3.1.0,并且此代码在没有指定'dtype'的情况下运行... @ jlarsch – Sunreef
有趣。那就提出了一个不同的问题。但是返回到我的问题:如果指定了dtype,但是提供了不正确的结果数组大小,会发生什么情况。对我来说,这可重复锁定输出视频文件。 – jlarsch