我正在使用OpenCV和Qt,Opencv使用BGR而Qt使用RGB,因此我必须将这2个字节交换为非常大的图像。
有以下更好的方法吗?
我想不出什么来得更快,但看起来却如此simple脚...
int width = iplImage->width;
int height = iplImage->height;
uchar *iplImagePtr = (uchar *) iplImage->imageData;
uchar buf;
int limit = height * width;
for (int y = 0; y < limit; ++y) {
buf = iplImagePtr[2];
iplImagePtr[2] = iplImagePtr[0];
iplImagePtr[0] = buf;
iplImagePtr += 3;
}
QImage img((uchar *) iplImage->imageData, width, height,
QImage::Format_RGB888);
最佳答案
我们目前正在Qt应用程序中处理此问题。我们发现,英特尔性能基元是最快的方法。他们有非常优化的代码。在Intel ippiSwapChannels Documentation的html帮助文件中,它们提供了您所确切查找的示例。
有几个缺点