首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用tmpfs改进openCV VideoWriter

用tmpfs改进openCV VideoWriter
EN

Stack Overflow用户
提问于 2017-03-16 14:23:42
回答 1查看 203关注 0票数 0

我目前正试图使用tmpfs来改进python/openCV的性能,因为当我试图在raspberry Pi 3上录制一个USB摄像头时,只能停留在5-10 FPS左右,即640x480。

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

可悲的是,当我在tmpfs文件夹上写我的opencv视频文件时,我没有得到任何改进。下面是我的基准代码:

代码语言:javascript
复制
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 | grep "/var/tmp"给出了tmpfs on /var/tmp type tmpfs (rw,nosuid,nodev,relatime) mount | grep "/ "给予/dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-16 20:58:48

如果直接写入内存并不能提高速度,那么很可能不是瓶颈。在编码时,CPU的使用率可能是100%。

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

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

代码语言:javascript
复制
/dev/null took :  6.05289101600647
tmpfs took     :  6.018815994262695
HDD took       :  5.695630073547363
SSD took       :  5.711660861968994
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42836794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档