Изображение, которое можно получить из метаданных OpenNI Image, упорядочено как изображение RGB. Я хотел бы преобразовать его в OpenCV IplImage, который по умолчанию предполагает, что данные будут храниться как BGR. Я использую следующий код:
XnUInt8 * pImage = new XnUInt8 [640*480*3];
memcpy(pImage,imageMD.Data(),640*480*3*sizeof(XnUInt8));
XnUInt8 temp;
for(size_t row=0; row<480; row++){
for(size_t col=0;col<3*640; col+=3){
size_t index = row*3*640+col;
temp = pImage[index];
pImage[index] = pImage[index+2];
pImage[index+2] = temp;
}
}
img->imageData = (char*) pImage;
Каков наилучший (самый быстрый) способ в C / C ++ для выполнения этого преобразования, чтобы изображение RGB стало BGR (в формате IplImage)?