繁体   English   中英

使用tmpfs改进openCV VideoWriter

[英]Improving openCV VideoWriter with tmpfs

我目前正在尝试使用tmpfs改善python / openCV性能,因为我试图以640x480的速度在树莓派3上录制USB摄像机时卡在5-10 FPS左右。

在我的系统上,我使用dd命令获得这些原始写传输速率:SD卡:2.5Mo / s tmpfs:380 Mo / s

可悲的是,当我将我的opencv视频文件写入tmpfs文件夹时,我没有任何改善。 这是我的基准代码:

import cv2
import numpy as np
import time

x = np.random.randint(255, size=(480, 640,3)).astype('uint8')

writer1 = cv2.VideoWriter('/home/pi/testDX1.avi',cv2.cv.CV_FOURCC('D','X','5','0'), 10, (640, 480), True)  
ctime=time.time()
for i in range(250):
    writer1.write(x)
writer1.release()
print("SDCard took :  "+`time.time()-ctime`)

writer2 = cv2.VideoWriter('/var/tmp/testDX2.avi',cv2.cv.CV_FOURCC('D','X','5','0'), 10, (640, 480), True)
ctime=time.time()
for i in range(250):
    writer2.write(x)
writer2.release()
print("tmpfs took :  "+`time.time()-ctime`)

它给 :

SDCard占用:8.289990901947021 tmpfs占用:8.240657806396484

该tmpfs的很好启用,通过mount命令说: mount | grep "/var/tmp" mount | grep "/var/tmp" tmpfs on /var/tmp type tmpfs (rw,nosuid,nodev,relatime)提供tmpfs on /var/tmp type tmpfs (rw,nosuid,nodev,relatime) mount | grep "/ " mount | grep "/ "给出/dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)

有人知道为什么tmfs不能提高写入速度吗?

如果直接写入内存不能提高速度,则可能不是瓶颈。 编码时,您的CPU使用率可能为100%。

作为最终测试,您可以尝试保存到/ dev / null。 根据dd的说法,我的笔记本电脑的吞吐量约为5GB / s。 尽管这样做,您将需要建立到/home/pi/null.avi的符号链接,因为openCV需要一个以.avi结尾的文件。

我在笔记本电脑上的SSD,HDD,tmpfs和/ dev / null上测试了脚本,它们的结果大致相同(使用2500次而不是250次迭代)。

/dev/null took :  6.05289101600647
tmpfs took     :  6.018815994262695
HDD took       :  5.695630073547363
SSD took       :  5.711660861968994

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM