使用wxWidgets

时间:2016-03-03 17:04:39

标签: c++ macos opencv wxwidgets

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

在我之间进行一些基本的图像修改,但这对我的问题并不重要。

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

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

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

奖金问题:当我在Macbook内部的Retina屏幕上显示窗口时,帧率变得更糟。是否可以对图片进行任何预处理/缩放以从GUI过程中取消负载?

1 个答案:

答案 0 :(得分:2)

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