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