cv::Mat类型转为CImage,MFC传入窗口句柄显示CImage图片

这段代码展示了如何将OpenCV的cv::Mat图像转换为MFC的CImage对象,并在指定窗口中显示。通过MatToCImage函数完成类型转换,然后使用ShowPic函数在窗口句柄上显示转换后的CImage图像。
摘要由CSDN通过智能技术生成
// 实现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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值