OpenNI RGB图像到OpenCV BGR IplImage转换?

Ras*_*oul 2 rgb opencv bgr openni

可以从OpenNI图像元数据获得的图像被布置为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;
Run Code Online (Sandbox Code Playgroud)

C/C++中执行此转换的最佳方式(最快)是什么,使RGB图像变为BGR(以IplImage格式)?

小智 8

使用OpenCV的颜色转换功能是不是很容易?

imgColor->imageData = (char*) pImage;
cvCvtColor( imgColor, imgColor, CV_BGR2RGB);
Run Code Online (Sandbox Code Playgroud)