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

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

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

https://www.v2ex.com/t/362909

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

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

© 2021 V2EX