我正在Mac OS X上使用VideoWriter
的{{1}}将图像写入视频。以下是代码:
OpenCV
此代码在开始时运行良好(每秒写入10帧)。然后,它变得越来越慢,直到它降到不可接受的水平。 1小时后(是的,我有很多文件,~10k),一帧大约30秒。 3小时后,写一帧需要1分钟以上。
我检查了fourcc = cv2.VideoWriter_fourcc(*'avc1')
vw = cv2.VideoWriter('%s/%s' % (path, 'output.avi'),
fourcc, fps, (img.shape[1], img.shape[0]), True)
for fn in filenames:
img = cv2.imread('%s/%s.png' % (path, fn))
if img == None:
print 'bad file', fn
continue
else:
print 'writing', fn
#cv2.imshow('preview', img)
#cv2.waitKey(1)
vw.write(img)
,Activity Monitor
消耗了大约10%的CPU和<40M内存。它变得如此之慢?我的代码有什么问题吗?如何提高性能?
一些信息:
我拥有的所有图片都放在一个文件夹下,它们都是1080p QTKitServer
个文件。 FPS约为.png
。我花了6个小时生成一个视频,大约500MB。
我在配备Xeon E3-1225v3,16GB RAM的Mac OS X 10.10.5计算机上运行此代码。 1000/66~=15
随OpenCV
一起安装。内存使用量保持在6GB左右,缓存为7GB。交换使用率约为= 12MB。