Qimage颜色显示反色总结

 Qimage颜色格式出现只要是出现颜色反色,即红蓝色颠倒的情况,一般是opencv中图像显色为BGR,而QImage中颜色显示为RGB,所以需要将其转色

分为一下两种情况

一种可以直接将mat定义的图像转色

代码如下

cvtColor(imglabel_3, imglabel_3, COLOR_BGR2RGB);

然后写入qimage中。

另一种是将QImage直接转变颜色,再显示,使用的是rgbSwapped函数进行转换。1

QImage QimgD2 = QimgD1.rgbSwapped();

一般就能解决问题了。

转色前

转色后

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QOpenGLWidget是Qt中的一个用于在OpenGL上下文中显示图形的小部件。要在QOpenGLWidget中显示QImage,可以按照以下步骤进行操作: 1. 创建一个继承自QOpenGLWidget的自定义小部件类,并重写其initializeGL、resizeGL和paintGL函数。 2. 在initializeGL函数中,进行OpenGL的初始化工作,例如设置背景颜色、启用深度测试等。 3. 在resizeGL函数中,根据窗口大小调整OpenGL视口的大小。 4. 在paintGL函数中,进行绘制操作。这里需要将QImage转换为OpenGL可用的纹理,并使用OpenGL的绘制函数进行绘制。 下面是一个简单的示例代码: ```cpp class MyOpenGLWidget : public QOpenGLWidget { public: MyOpenGLWidget(QWidget *parent = nullptr) : QOpenGLWidget(parent) {} protected: void initializeGL() override { // 初始化OpenGL glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glEnable(GL_DEPTH_TEST); } void resizeGL(int w, int h) override { // 调整OpenGL视口大小 glViewport(0, 0, w, h); } void paintGL() override { // 绘制操作 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 将QImage转换为OpenGL纹理 QImage image; // 假设已经有一个QImage对象image GLuint texture; glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.width(), image.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, image.bits()); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // 绘制纹理 glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex2f(-1.0f, -1.0f); glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f, -1.0f); glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f, 1.0f); glTexCoord2f(0.0f, 1.0f); glVertex2f(-1.0f, 1.0f); glEnd(); // 删除纹理 glDeleteTextures(1, &texture); } }; ``` 使用这个自定义的MyOpenGLWidget类,你可以将其添加到你的Qt应用程序中,并在其中显示QImage

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值