我正在开发一个图像处理应用程序,它将来自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();
}
其中PaintLabel
是QLabel
的子类,rectangle
是QRectF
,显示image
的绘制位置。
我已经完成了一些时间测量,结果发现第二种方法的速度提高了约1.8倍(大约9 ms对16 ms)。
所以,我的问题是:有没有其他方法可以更快地显示char*
位图 - 尽可能快?请注意,这只是一个相同的缓冲区,它的内容正在发生变化;所以没有必要从头开始为每一帧重建一切 - 只是为了刷新。