OpenGL显示图像的速度比OpenCV快吗?

hby*_*001 8 c++ opengl opencv

我正在使用OpenCV在投影机上显示图像.但似乎cv :: imshow不够快,或者数据传输从我的CPU到GPU再到投影仪都很慢,所以我想知道是否有比OpenCV更快的显示方式?

我考虑过OpenGL,因为OpenGL直接使用GPU,命令可能比OpenCV使用的CPU更快.如果我错了,请纠正我.

ypn*_*nos 9

OpenCV已经支持OpenGL自己进行图像输出.不需要自己写这个!

请参阅文档:http : //docs.opencv.org/modules/highgui/doc/user_interface.html#imshow http://docs.opencv.org/modules/highgui/doc/user_interface.html#namedwindow

首先创建窗口namedWindow,您可以在其中传递WINDOW_OPENGL标记.然后你甚至可以使用OpenGL缓冲区或GPU矩阵作为输入imshow(数据永远不会离开GPU).但它也将使用OpenGL来显示常规矩阵数据.

请注意:

要启用OpenGL支持,请使用带有WITH_OPENGL = ON的CMake配置OpenCV.目前,OpenGL仅支持Windows和Linux上的WIN32,GTK和Qt后端(不支持MacOS和Android).对于GTK后端,需要gtkglext-1.0库.

请注意,这是OpenCV 2.4.8,并且此功能最近已更改.我知道早期版本中的OpenGL支持与Qt后端一起使用,但我不记得它什么时候被引入.

关于性能:在CV社区中,使用OpenGL输出图像是一种非常流行的优化,尤其是在输出视频序列时.

  • 有人可以共享示例代码以使用opengl和opencv吗? (3认同)

小智 6

OpenGL针对渲染图像进行了优化,因此可能更快.这取决于OpenCV实现是否使用任何GPU加速,如果瓶颈在渲染方面.

您是否尝试过GPU加速的OpenCV?- http://opencv.org/platforms/cuda.html

你要显示的图像有多大?cv::imshow现在使用显示图像需要多长时间?