c++ - 如何使用 OpenGL 渲染在 Qt 界面上显示 IPLImage 流?

标签 c++ qt opengl opencv iplimage

将 IplImage 集成和显示到 Qt GUI 中的最佳方法是什么?这可以使用 OpenGL 完成吗?如果是,如何?

最佳答案

好吧,我在这里回答我自己的问题。
一年以来,我一直在使用 OpenCV,很多次我不得不编写代码来打开视频文件并对其进行流式传输。
最近,我一直在使用 Qt 来提供高级 gui,我想出了一个解决方案来使用 OpenGL 在 Qt GUI 上显示 IplImages(我花了很多时间努力但最终成功了)。尽管 OpenCV 可以在 Qt highgui 支持下构建,但我还是热衷于学习一些 OpenGL 并将其用于我的应用程序。
我认为这对需要一个基本框架来为他们的应用程序运行视频的人会有帮助。
这个基本框架可用于视频内容分析、人脸识别、模式识别等广泛的应用。从广义上讲,这基本上是一个没有音频支持的视频播放器。因此,如果您愿意,可以添加音频支持并使其成为视频播放器。它将播放几乎所有格式,因为 opencv 使用 ffmpeg 播放视频。我已经为它创建了一个我广泛使用的 C++ 库:

主要类有:

QVideo : The main widget, providing functionality to open a video/rtsp stream and play it  
QIplImage: The core display widget. It's a QGLWidget which renders an IplImage
BackgroundWorker: This is a thread which runs in the background to retrieve images
from the stream. It is mandatory to run the frame grabber in a background thread,
otherwise it interferes with the GUI thread. All the image processing can be done in 
this thread

已提供源代码,因此您可以根据需要对其进行修改。 安装该库后,您可以像这样在您的 qt 应用程序中使用它:

//Create an object
QVideo* video=new QVideo("Name",);
//set geometry (optional)
setCentralWidget(video);

要构建库,您需要安装 qt 和 opencv(支持 ffmpeg)。 该库根据体系结构安装在/usr/lib 或/usr/lib64 中。 包含文件安装在/usr/local/include 当然,如果需要,所有这些都可以在项目文件中更改。 要安装,只需解压缩包,然后运行 ​​qmake、make 和 sudo make install。 注意:该项目是为 unix 配置的,需要针对 windows 构建进行更改。给我留言以获取更多信息。

关于c++ - 如何使用 OpenGL 渲染在 Qt 界面上显示 IPLImage 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181475/

相关文章:

c++ - Qt选择矩形位置

javascript - Qt QWEBview JavaScript 回调

c++ - 从函数返回时 std::pair second 的奇怪行为

c++ - 好友函数 "non-lvalue in assignment"

c++ - 当从主窗口调用时,Qt 将对话框显示为无框架

c++ - 在 OpenGL 中定位对象数组

c++ - Qt 5 的多个 OpenGL 视口(viewport)

C++ 对象池,将项目作为智能指针提供,在删除时返回到池中

c++ - LNK2028 和 LNK2019 错误

OpenGL 我什么时候可以再次开始发出命令