繁体   English   中英

显示QImage的方式

[英]Ways to display QImage

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

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

还有其他办法吗? (更高效,更优雅)

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

您可以使用;

  1. 带有OpenGL的GLWidget :: paintGL()

    glClear(GL_COLOR_BUFFER_BIT);

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

  2. Qt painter无效的Painter :: paintEvent(QPaintEvent * event)

    QPainter painter(this);
    painter.drawImage(0,0,IMG,0,0,img.width(),img.height());

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM