在python OpenCV中使用cv2.VideoCapture
从文件中读取视频的示例内存不足:
import cv2
cap = cv2.VideoCapture('file.mp4')
while True:
ret, frame = cap.read()
它在耗尽之前在1920x1080需要约300帧。在OpenCV 3.0.0 beta和2.4.8中测试,在Windows 7 64位上运行最新的Pythonxy。
需要在此代码中添加什么内容才能使内存耗尽,而是在读取下一帧之前释放每一帧?
答案 0 :(得分:1)
尝试
while True:
ret, frame = cap.read()
if(!frame)
break;
确保frame
有效,以避免永远读取帧甚至无效。
答案 1 :(得分:1)
您可以使用具有视频加载程序的scikit-image
,并根据文档支持Opencv
和Gstreamer
后端。我从未使用Gstreamer
。
import cv2
from skimage.io import Video
cap = Video(videofile)
fc = cap.frame_count()
for i in np.arange(fc):
z = cap.get_index_frame(i)
现在使用框架z
做你想做的事情!