#include "StdAfx.h"
#include "ImageUtility.h"
ImageUtility::ImageUtility(void)
{
}
ImageUtility::~ImageUtility(void)
{
}
// 实现cv::Mat 结构到 CImage结构的转化
void ImageUtility::MatToCImage(Mat& mat, CImage& cImage)
{
int width = mat.cols;
int height = mat.rows;
int channels = mat.channels();
cImage.Destroy();//这一步是防止重复利用造成内存问题
cImage.Create(width,height,8*channels);
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++)
{
ColorTable[i].rgbBlue = (BYT
opencv Mat结构和CImage的转化和显示
最新推荐文章于 2024-08-11 10:13:59 发布
本文主要介绍了如何在OpenCV中将Mat结构转换为CImage格式,并展示了如何进行图像显示。通过源文件和头文件的详细说明,读者可以理解这两个库之间的交互操作及其在图像处理中的应用。
摘要由CSDN通过智能技术生成