【问题标题】:How to quickly refresh images on screen with Python/OS-X and improve upon opencv's imshow()如何使用 Python/OS-X 快速刷新屏幕上的图像并改进 opencv 的 imshow()
【发布时间】:2017-06-22 20:45:59
【问题描述】:

我正在开发一个 Python (2.7.13) 程序,该程序使用 opencv ( 3.2.0-开发)。使用 cv2.imshow() 更新 720x1280 输出图像时,FPS (13) 非常低。如果我删除对 cv2.imshow() 的调用并保持循环的其余部分相同,它会上升到 75 FPS。我应该用什么代替 cv2.imshow() 来减少这个图像刷新瓶颈?我正在使用带有专用显卡的 2016 MacBook Pro。

我是否需要 PyOpenGL,如果需要,是否有任何明确的示例记录在案?我尝试了 Pygame 的 blit 函数,并没有看到 FPS 的改进。我考虑过使用 OpenGL 的 Pyglet,但我不熟悉 Pyglet 使用的事件范式,并且如果事实证明有更合适的方法来重写我的代码,因为 Pyglet 似乎主要用于游戏和一些消息来源说它维护得不好。

【问题讨论】:

    标签: python opencv opengl pyglet pyopengl


    【解决方案1】:

    imshow() 功能并非真正用于实时或流式视频显示。您可以使用 OpenGL 轻松地以帧速率运行,但需要付出相当多的努力。看看PySDL,它为您提供了更高级别的 OpenGL API,但仍为帧速率性能而设计。

    【讨论】:

    • 感谢您为我指明了正确的方向。这个问题的答案有可以修改的代码:link
    【解决方案2】:

    尝试仅显示每第 n 个图像。

    或者尝试将图像保存到磁盘 - 最好是 ssd 或 ramdisk - 并使用支持自动重新加载的图像查看器显示它。

    您不会以这种方式查看所有图像,但很可能它足以用于监控 - 并且您可以节省 openCV 的宝贵计算时间。

    【讨论】:

      猜你喜欢
      • 2014-09-10
      • 2013-12-31
      • 2018-02-06
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 2011-10-08
      • 2014-12-03
      • 2015-04-20
      相关资源
      最近更新 更多