显示QI法师的方法

Ways to display QImage

本文关键字:方法 QI 显示      更新时间:2023-10-16

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

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

還有別的方法嗎?(更高效,更優雅)

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

您可以使用;

  1. void GLWidget::p aintGL() with OpenGL void

    glClear(GL_COLOR_BUFFER_BIT);

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

  2. void Painter::p aintEvent(QPaintEvent* event) with Qt painter

    QPainter画家(这个);
    painter.drawImage(0,0,img,0,0,img.width(),img.height());

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

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

我知道的一种方法是子类QWidget,覆盖paintEvent并使用提供的QPainter绘制QImage。如果要更新图像,您可能还希望显式调用该小部件上的update()

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

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