我正在开发一个图像处理应用程序,它从 IDS uEye 驱动程序获取图像数据作为原始char*
缓冲区。我需要向用户展示这张图片。(据我了解Qt,QLabel
该类应该用于此目的)。我还应该说明图像处理算法,我认为直接修改char*
缓冲区最快。
我已经看到了很多使用这种方法的代码示例:
label.setPixmap(QPixmap::fromImage(image));
其中image
是QImage
从char*
缓冲区构造的。
但是,我在 uEye 演示应用程序源中找到了这段代码:
void PaintLabel::paintEvent(QPaintEvent *ev)
{
//...
QPainter painter(this);
painter.drawImage(rectangle, image);
painter.end();
}
wherePaintLabel
是 的子类,QLabel
并且显示应该在哪里绘制。rectangle
QRectF
image
我做了一些时间测量,结果发现第二种方法快了大约 1.8 倍(大约 9 毫秒对 16 毫秒)。
所以,我的问题是:有没有其他方法可以char*
更快地显示位图 - 尽可能快?请注意,这只是一个相同的缓冲区,只是它的内容在变化;因此无需为每一帧从头开始重建所有内容 - 只需刷新即可。