C++ 从字节数组快速更新QPixmap
我正在开发一个vision应用程序,我需要使用QPixmap对象在屏幕上显示摄像头的“实时视图”。我们将以每秒30帧的速度连续更新屏幕 我的问题是,这个应用程序必须在一些3-5年历史的计算机上运行,按照今天的标准,这些计算机运行速度很慢。所以我想做的是能够直接写入QPixmap内部的显示字节数组。看完程序代码后,几乎所有更改Pixmap内容的选项都会创建一个新的QPixmap。这是我想利用的开销 此外,我想防止所有新的/删除发生,只是为了控制内存碎片C++ 从字节数组快速更新QPixmap,c++,windows,qt,C++,Windows,Qt,我正在开发一个vision应用程序,我需要使用QPixmap对象在屏幕上显示摄像头的“实时视图”。我们将以每秒30帧的速度连续更新屏幕 我的问题是,这个应用程序必须在一些3-5年历史的计算机上运行,按照今天的标准,这些计算机运行速度很慢。所以我想做的是能够直接写入QPixmap内部的显示字节数组。看完程序代码后,几乎所有更改Pixmap内容的选项都会创建一个新的QPixmap。这是我想利用的开销 此外,我想防止所有新的/删除发生,只是为了控制内存碎片 有什么建议吗?我发现直接I/O操作的QIMA
有什么建议吗?我发现直接I/O操作的QIMAGE速度更快 您能提供更多关于QPixmap的详细信息吗?首先,关于Qt中的“picture”类: QImage针对I/O、直接像素访问和操作进行了设计和优化,而QPixmap针对在屏幕上显示图像进行了设计和优化 这意味着QPixmap是平台本机映像格式的通用表示形式:Unix上为
Pixmap
,Windows上为HBITMAP
,Mac上为cgimaref
。QImage是一个“带操作的像素数组”类型的类
我假设如下:
- 您正在以特定像素格式读取原始相机帧
- 你确实有记忆碎片问题(与情绪上的问题相反)
- 如果您正在读取原始相机帧,可能仍需要进行格式转换。两次,在最坏的情况下:相机➔ 奇玛格➔ 平台位图
- 当使用QPixmap和QImage时,您无法避免从空闲存储分配内存:它们是并且必须从空闲存储分配内存。(另一方面,这意味着您不应该显式地新建/删除它们。)