重要术语保持英文不变,如Widget等。原文中rendering意为渲染或绘制。
此教程是关于在Qt图形界面中显示OpenCV图像的问题,我们创建了一个基于QGLWidget的Qt Widget。
这个Widget提供了更好的图像绘制性能,并支持在缩放窗口时固定高宽比。
此教程假定读者掌握关于C++、Qt 5 框架、OpenCV 2库在Qt Creator中开发环境的配置的基础知识。实例代码是在Windows 7下设计的,但也能在不需大幅改动的前提下移植到Linux和MacOS中,只需配置正确的库文件路径即可。
第一部分描述了Widget的创建。
CQtOpenCVViewerGl 类的创建:
在 QtCreator 中:
- 文件-> 新建文件或工程 -> C++ -> C++ Class -> Choose
- 类名: CQtOpenCVViewerGl
- 基类: QGLWidget [注意字母大小写]
译者注:从Qt 5.4版本开始,QGLWidget已更新为QOpenGLWidget。
到这一步你应该在工程中建立了两个新的文件,cqtopencvviewergl.cpp 和 cqtopencvviewergl.h 。
打开 cqtopencvviewergl.h 并添加几个私有成员变量:
private:
bool mSceneChanged; /// Indicates when OpenGL view is to be redrawn
QImage mRenderQtImg; /// Qt image to be rendered
cv::Mat mOrigImage; /// original OpenCV image to be shown
QColor mBgColor; /// Background color
int mOutH; /// Resized Image height
int mOutW; /// Resized Image width
float mImgratio; /// height/width ratio
int mPosX; /// Top left X position to render image in the center of widget
int mPosY; /// Top left Y position to render image in the center of widget
- mSceneChanged: 指示图像是否需要绘制
- mRenderQtImg: 包含需要绘制的图像 (Qt格式)
- mOrigImage: 包含需要绘制的图像 (OpenCV格式)
- mBgColor: 不显示图像的区域的背景色
- mOutH & mOutW: 图像真实绘制尺寸
- mImgratio: 包含有关图像大小比例的信息
- mPosX & mPosY: 左上角开始的图像坐标,允许在窗口部件的中心绘制图像