我写了一个使用 opencv 和videowriter生成视频输出的函数
我正在从我的spyder/ipython IDE中的脚本调用此函数。 在调试过程中,该函数仍然有故障,有时它会中止而不释放视频文件。我尝试实现try/exception,但仍然有一些实例没有被捕获。
每次发生这种情况时,输出视频文件都会保持锁定状态,例如,我无法使用Windows资源管理器删除它,也无法使用与输出相同的文件名来再次运行该程序,直到我关闭并重新启动spyder IDE。
有没有办法在不关闭 IDE 的情况下查找和释放所有这些"孤立"视频作者对象?
这是我的代码的虚拟示例:
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)
实际上,您的代码会给出错误。您必须指定result = np.ones((100,100), dtype = np.uint8)
才能运行。否则,您将获得失败的 OpenCV 断言。
我可以毫无问题地删除视频(我使用的是 Python IDLE),即使不关闭控制台也是如此。