// 实现cv::Mat 结构到 CImage结构的转化
void MatToCImage(cv::Mat& mat, CImage& cImage) { int width = mat.cols; int height = mat.rows; int channels = mat.channels(); if (width <= 0) { return; } if (!cImage.IsNull()) { cImage.Destroy();//这一步是防止重复利用造成内存问题 } if (!cImage.Create(width, height, 8 * channels)) { return; } uchar* ps; uchar* pimg = (uchar*)cImage.GetBits(); //获取CImage的像素存贮区的指针 int step = cImage.GetPitch();//每行的字节数,注意这个返回值有正有负 // 如果是1个通道的图像(灰度图像) DIB格式才需要对调色板设置 // CImage中内置了调色板,我们要对他进行赋值: if (1 == channels) { RGBQUAD* ColorTable; int MaxColors = 256; //这里可以通过CI.GetMaxColorTableEntries()得到大小(如果你是CI.Load读入图像的话) ColorTable = new RGBQUAD[MaxColors]; cImage.GetColorTable(0, MaxColors, ColorTable);//这里是取得指针 for (int i = 0; i<MaxColors; i++) { Co
cv::Mat类型转为CImage,MFC传入窗口句柄显示CImage图片
这段代码展示了如何将OpenCV的cv::Mat图像转换为MFC的CImage对象,并在指定窗口中显示。通过MatToCImage函数完成类型转换,然后使用ShowPic函数在窗口句柄上显示转换后的CImage图像。
摘要由CSDN通过智能技术生成