opencv Mat结构和CImage的转化和显示

本文主要介绍了如何在OpenCV中将Mat结构转换为CImage格式,并展示了如何进行图像显示。通过源文件和头文件的详细说明,读者可以理解这两个库之间的交互操作及其在图像处理中的应用。
摘要由CSDN通过智能技术生成
#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值