Qt中Qimage转opencv mat图片

本文介绍了两种将Qt中的QImage转换为OpenCV的Mat图像的方法,适用于单通道灰度图像和三通道8位RGB图像。转换过程中涉及到格式转换、内存分配及数据复制,为Qt与OpenCV之间的图像处理提供了便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt中Qimage转opencv mat图片

方法一:单通道

Mat matTOimge(QImage & mage)
{

	QImage::Format format = mage.format();
	if (format != QImage::Format_Indexed8)
	{
		cout << "此函数只适用于单通道灰度图片的转换";
		return Mat();
	}
	mage.convertToFormat(QImage::Format_Grayscale8); //格式转换
	Mat mat = Mat::zeros(mage.height(), mage.width(), CV_8UC1);		//创建单通道的mat图片并分配内存
	uchar * prtImage = mage.bits();		//获取Qimage图片的首地址
	uchar * prtMat = mat.data;		//获取mat图像的首地址
	memcpy(prtMat, prtImage, mage.height() * mage.width());		//内存复制
	return Mat(mat);
}

方法二:三通道8位

Mat matTOimge(QImage & mage)
{

	QImage::Format format = mage.format();
	if (format != QImage::Format_RGB888)
	{
		cout << "此函数只适用于3通道8位图像灰度图片的转换";
		return Mat();
	}
	mage.convertToFormat(QImage::Format_RGB888);
	Mat mat = Mat (mage.height(),
	               mage.width(), 
	               CV_8UC3,
	               mage.bits(),
	               mage.bytesPerLine());//创建3通道8位图片并分配内存
	return Mat(mat);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪的猪头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值