c++ - 使用 wxWidgets 绘制视频流

标签 c++ macos opencv wxwidgets

我有一个相对简单的应用程序,目前使用 OpenCV 使用 cv::VideoCapture 从相机中抓取图像,并使用 imshow() 在窗口中查看生成的图像> 在 OS X El Capitan 上运行。

在此期间,我正在做一些基本的图像修改,但这对我的问题来说并不重要。

由于 OpenCV 实现的 GUI 非常基础,我决定使用 wxWidgets 重做它。我得到它基本上运行类似于实现 linked在 wxWidgets 的教程部分。 (将其更新为 C++11 等,但想法几乎相同。代码位于 github 上。)

现在我的问题是:在最好的情况下,我得到的帧率只有使用 OpenCV 解决方案的一半。 OpenCV 在底层使用 qt。但是当我查看堆栈跟踪时,它归结为使用 CoreGraphics 的类似函数调用。

所以我的问题归结为:在 OS X 上使用 wxWidgets 将图像绘制到帧速率 > 20fps 的窗口的最佳方法是什么?目前我使用 DrawBitmap() 函数。

奖金问题:当我的 Macbook 内部 Retina 屏幕上有窗口时,帧率变得更糟。我应该对图片进行任何预处理/缩放以减轻 GUI 进程的负载吗?

最佳答案

最快的可能是使用 OpenGL(虽然我不太确定在 OS X 下这不是 OpenGL 友好的 AFAIK),但我不确定瓶颈是否真的是 DrawBitmap() ,它可能是首先转换为 wxBitmap 的代码:如果你不使用 raw bitmap access , 它可能会很慢。

关于c++ - 使用 wxWidgets 绘制视频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778456/

相关文章:

c++ - 删除 void 指针时未调用析构函数

c++ - boost daytime7 服务器示例不响应 netcat 客户端

macos - 在 Mac 上使用 zsh 的 bindkey

python - 无法在Mac上导入Pyodbc

c++ - 在没有校准的情况下从一些图像重建 3D?

python - 如下应用 SLIC 后如何检测云的百分比?

c++ - 英特尔® IPP 异步 C/C++ 库是否包含在标准 IPP 库中?

C++ 运行时检查失败 #2 - 变量 'theArray' 周围的堆栈已损坏

c++ - 一个模板化的 'strdup()' ?

macos - (NSMenuItem) : missing setter or instance variable