int MatToCImage( Mat &mat, CImage &cImage)

{

//create new CImage

int width = mat.cols;

int height = mat.rows;

int channels = mat.channels();

cImage.Destroy(); //clear

cImage.Create(width, height,8*channels ); //默认图像像素单通道占用1个字节

//copy values

uchar* ps;

uchar* pimg = (uchar*)cImage.GetBits(); //A pointer to the bitmap buffer

int step = cImage.GetPitch();

for (int i = 0; i < height; ++i)

{

ps = (mat.ptr(i));

for ( int j = 0; j < width; ++j )

{

if ( channels == 1 ) //gray

{

*(pimg + i*step + j) = ps[j];

}

else if ( channels == 3 ) //color

{

for (int k = 0 ; k < 3; ++k )

{

*(pimg + i*step + j*3 + k ) = ps[j*3 + k];

}

}

}

}

return 0;

}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐