Python OpenCV VideoWriter变得越来越慢
我正在使用Mac OS X上的Python OpenCV VideoWriter变得越来越慢,python,performance,opencv,Python,Performance,Opencv,我正在使用Mac OS X上的VideoWriter从OpenCV将图像写入视频。下面是代码: 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' %
VideoWriter
从OpenCV
将图像写入视频。下面是代码:
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)
此代码在开始时运行良好(每秒写入10帧)。然后,它变得越来越慢,直到它下降到一个不可接受的水平。1小时后(是的,我有很多文件,~10k),一帧大约30秒。3小时后,写一帧需要1分钟以上
我检查了
活动监视器
,QTKitServer
消耗了大约10%的CPU,作为一种解决方法,您是否考虑过使用中间文件,例如,将每1分钟的视频生成一个单独的文件,然后使用FFMPEG将其合并?什么是fourcc代码?请检查内存总量(或者更确切地说,交换使用情况)跑步时使用?您观察到的问题可能是图像数据留在内存中,导致交换。不确定OS X,但在Debian上,我在写入文件时遇到问题(每个图像只有一个文件)。有一段时间效果很好,但后来出现了更长的延迟。可能是一些文件系统优化。。。尝试在一个单独的线程中使用一些自定义缓冲来编写文件!这对我有用。我可以看到一些缓冲区在一段时间后增长,但稍后缓冲区又会缩小。但是,您应该检查bandwith在您的设备上是否足够大@Hannesovren交换使用量仅为12MB,内存使用量不足一半(总共6G/16G)。所以我认为这不是问题所在。