在 windows 下用 Python 和 opencv 做了一个视频分析程序,如何加速?

2017 年 5 月 22 日
 zzcchh
从视频中提取数据,开启视频窗口的话每秒处理 5-6 帧,一小时视频要 5-6 小时处理完,我想慢点也没关系,但是 cpu 占用率只有 2%。这就不让我淡定了,明显是偷懒了,安排了多线程,好像也是不能提升速度,请问 windows 就是不会给 python 太多资源么?我开了几路脚本一起做,cpu 仍然占用率也很低。这是怎么回事?
6619 次点击
所在节点    Python
32 条回复
comesx4
2017 年 5 月 22 日
用的是 GPU?
misaka19000
2017 年 5 月 22 日
放代码
zzcchh
2017 年 5 月 22 日
@misaka19000 不敢放,太丑了,流程比较简单,识别轮廓,拟和椭圆和质点,记录 csv,甚至没有定义函数。
zzcchh
2017 年 5 月 22 日
@comesx4 没有就是 cpu。
cnnblike
2017 年 5 月 22 日
用的是机械硬盘?或者内存比较小?
laodao
2017 年 5 月 22 日
上异步,分分钟跑满你的 cpu。
Finest
2017 年 5 月 22 日
多线程改为多进程
XYxe
2017 年 5 月 22 日
计算密集的任务试试多进程
scream7
2017 年 5 月 22 日
是不是时间消耗在 IO 操作上了
baicheng
2017 年 5 月 22 日
试着多将几帧一次性读入内存看看行不行?运行的时候看下资源占用率是不是硬盘开销比较大,如果你 CPU 相当牛叉有十几个核可以试试用 MATLAB 并行。
adodo1
2017 年 5 月 22 日
5/6 帧一秒,视频好歹也 25 帧一秒最少
zzcchh
2017 年 5 月 22 日
@adodo1 我说的是处理速度,不是播放速度,一小时视频 5 个小时处理完没毛病
itfanr
2017 年 5 月 22 日
建议用 go 或者 rust
zhidian
2017 年 5 月 22 日
1. 可以只处理部分帧(关键帧?); 2. 每帧太大的话,降采样变小点;
itfanr
2017 年 5 月 22 日
@adodo1 是处理速度
zhidian
2017 年 5 月 22 日
如果只是线、椭圆检测啥的,OpenCV 好像提供跟踪,应该快点吧。
ytmsdy
2017 年 5 月 22 日
应该是 io 没跟上,导致 cpu 工作不饱和
uucloud
2017 年 5 月 22 日
换 c++
zhidian
2017 年 5 月 22 日
@uucloud OpenCV 的 Python 绑定,调的也是 C++。
zzcchh
2017 年 5 月 22 日
@ytmsdy 我觉得可能是,其实硬盘没有跟忙。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/362909

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX