如何用GPU加速Python中的闪电视频亮度分析处理?
用GPU加速GoPro闪电视频亮度检测程序的优化需求
我用GoPro以240fps帧率拍摄了长时长闪电视频,使用Python结合OpenCV编写了一款程序,用于检测闪电对应的亮度峰值并生成亮度曲线图。程序功能正常,但处理速度过慢:在i7-10700K处理器上处理一段20秒的视频需耗时90秒。
通过基准测试发现:仅读取所有帧就花费了46秒,处理环节耗时44秒,打印操作仅占1秒。
我未实现多线程,因为认为其性能提升有限,且可通过在多个终端同时处理多个视频来让CPU达到100%使用率。现在希望通过GPU来加速处理:我能以240fps完美播放视频,因此仅需对像素RGB值求和的处理环节应该能在20秒内完成,甚至更快。
- 20秒测试视频(152MB):存储于Google Drive
- 预期亮度曲线图:对应示例图
核心代码如下:
while video.isOpened(): success, frame = video.read() if success: index += 1 else: if index >= length: break error += 1 print('empty frame :', error) continue # Channel 0:B 1:G 2:R height, width, channels = frame.shape brightness.append(np.sum(frame[0:height, 0:width, 0:channel])) print(f'{index}/{length}') video.release()
另外,如果您知道能更快实现该功能的软件,也请推荐给我——我选择用Python实现只是因为没找到合适的软件。
内容的提问来源于stack exchange,提问作者Nekzuris
相关产品推荐
相关产品推荐

