gpt4 book ai didi

python - 使用 tmpfs 改进 openCV VideoWriter

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:12 26 4
gpt4 key购买 nike

我目前正在尝试使用 tmpfs 提高 python/openCV 的性能,因为我在 640x480 的树莓派 3 上尝试录制 USB 相机时卡在了 5-10 FPS 左右。

在我的系统上,我使用 dd 命令获得了这些原始写入传输率:SD 卡:2.5Mo/stmpfs : 380 莫/秒

遗憾的是,当我在 tmpfs 文件夹中写入我的 opencv 视频文件时,我没有得到任何改进。这是我的基准代码:

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 took : 8.289990901947021 tmpfs took : 8.240657806396484

如 mount 命令所述,tmpfs 已启用:挂载 | grep "/var/tmp" 在/var/tmp 类型 tmpfs (rw,nosuid,nodev,relatime) 上给出 tmpfs挂载 | grep "/" 在/type ext4 (rw,noatime,data=ordered) 上给出 /dev/mmcblk0p2

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

最佳答案

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

作为最终测试,您可以尝试保存到/dev/null。根据 dd 在我的笔记本电脑上的吞吐量约为 5GB/s。尽管要做到这一点,您需要创建一个指向/home/pi/null.avi 的符号链接(symbolic link),因为 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

关于python - 使用 tmpfs 改进 openCV VideoWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42836794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com