显示QImage的方法

时间:2014-02-05 12:29:29

标签: c++ qt opencl

我打算使用OpenCL和Qt演示一些图像处理算法。

我知道我可以用QLabel显示QImage。

还有其他方式吗?(效率更高,更优雅)

如果我可以展示一些“实时”转换,那就太好了。 有可能吗?

4 个答案:

答案 0 :(得分:2)

你可以使用;

  1. 使用OpenGL void

    使GLWidget :: paintGL()无效

    glClear(GL_COLOR_BUFFER_BIT);

    glDrawPixels(img.width(),img.height(),GL_RGBA,GL_UNSIGNED_BYTE,img.bits());

  2. 使用Qt画家的void Painter :: paintEvent(QPaintEvent * event)

    QPainter画家(本);
    painter.drawImage(0,0,IMG,0,0,img.width(),img.height());

答案 1 :(得分:1)

我所知道的一种方法是继承QWidget,覆盖paintEvent并使用提供的QPainter绘制QImage。如果您想要更新图片,您可能还想明确地在该窗口小部件上调用update()

答案 2 :(得分:1)

您可以使用QGLWidget创建OpenGL上下文,然后使用OpenCL-OpenGL可互换性。因此,图像在OpenGL中呈现为纹理,并在OpenCL中完成计算。

或者,请查看此链接http://doc.qt.digia.com/opencl-snapshot/openclgl.html

答案 3 :(得分:1)

我使用Boost.Compute中的OpenCL / Qt互操作支持编写了一个示例,使用OpenCL将简单的模糊过滤器应用于QImage,然后在Qt窗口中显示。

请参阅:https://github.com/kylelutz/compute/blob/master/example/qimage_blur.cpp