您尚未登录。

楼主 #1 2020-08-10 22:02:56

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

我有6个摄像头,如何30FPS不掉帧率的采集呢?

我有6个USB摄像头,接到PC机上,我使用opencv和qt,能全部同时打开,并imshow
显示出图像,并保持30fps的帧率,

我每个USB摄像头使用了1个线程去读取摄像头数据,然后显示出来。

我想将采集的图片一张一张无损的保存在本地png格式,但是当我在读取的线程中imwrite保存的时候,就会降低帧率(摄像头保持30FPS,PC的读取帧率降低)
我改变了思路,我创建了6个队列,每一个线程去获取图片,然后扔到对应的队列里面,然后创建6个线程去读取队列并保存。
我发现帧率还是降低的,并不能保证满帧率,
因为PC机是4核8线程,即使加了很多线程,都是在轮询执行,保存图片的线程占用了读取图片线程的时间。
有没有大佬有好的解决办法呢,我想30fps不丢帧的保存下来摄像头拍摄的图片,并且图片需要无损的方式。

离线

楼主 #3 2020-08-10 22:18:55

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

春风吹又生 说:

磁盘IO速度与CPU不在一个量级, 你现在是机械硬盘? 要不要用DDR模拟一个磁盘试一试?

我的DDR是16GB的,因为读取速度很快,硬盘存储速度慢,图片有一堆都堆在了队列里面,队列就是内存,能在任务管理器看到内存占用暴涨,一会就2GB或3GB,时间再长就内存爆了。。。。

离线

楼主 #4 2020-08-10 22:20:17

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

春风吹又生 说:

磁盘IO速度与CPU不在一个量级, 你现在是机械硬盘? 要不要用DDR模拟一个磁盘试一试?

还有,我现在用的是垃圾固态硬盘,
好像保存小文件的速度慢,我拷贝大文件能达到300MB/S,但是保存的图片是一张张小文件,一个进程读队列保存的话,从任务管理看,速度只有3~4MB/S.

离线

楼主 #5 2020-08-10 22:24:38

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

我说一个思路,不知道可不可行,如果我采集到一张图片我就把图片拼起来,我拼成一个长图,当图片长度达到一定时,我就保存,这样相当于保存大图,不知道是不是速度会加速。

离线

楼主 #7 2020-08-10 22:56:25

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

我现在是I7 7700  16GB内存   ssd

离线

楼主 #9 2020-08-11 08:49:56

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

拉轰的脚踏车 说:

VisualStudio工具里面有一个性能分析器, 可以采集一段时间内程序运行情况,

分析报告非常详细,可以显示每行代码/每个函数占用的时间,

楼主可以试一试。

我就是看的那个分析,内存暴涨

离线

楼主 #10 2020-08-11 08:51:15

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

我有个思路不知道怎么样,采集图像到内存速度时很快的,我使用1个线程去轮询采集图像到队列,将更多的线程留给保存图片到硬盘

离线

楼主 #12 2020-08-11 09:17:42

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

哇酷小二 说:

用 ffmpeg 的 sdk, 把图片保存成H.264压缩的视频,这样把压力传给了CPU,对磁盘IO影响比较小。

可能需要在每帧照片上面打上时间戳。

保存成视频是会对图片造成有损的,我采集的图片并不是普通的彩色图片,是具有深度信息的图片,每一个像素点信息都是不能丢的,所以视频方式目前没有无损的方式

离线

楼主 #14 2020-08-11 18:34:03

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

iamseer 说:

既然硬盘是瓶颈,那多插几个高质量优盘行不行?几个摄像头写往不同优盘,只要总线带宽不满吞吐量应该可以上升。

不是硬盘是瓶颈,硬盘的写入速度可达300MB/s
但由于一帧帧保存图片属于小文件,单个文件保存速度很慢,达不到较高的速度。

离线

楼主 #16 2020-08-12 06:44:57

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 我有6个摄像头,如何30FPS不掉帧率的采集呢?

barcode 说:

看起来瓶颈在写文件?

每秒要写 6*30 = 180 个png 文件?

写一个单线程程序, 全速写png文件, 看平均每秒能写多少个?

比如算下来每秒能写 60个png文件, 那么就准备3个硬盘继续测试.

摄像头采集速度是25MB/S,单线程写入速度是4MB/S左右

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn