cvtColor()实际操作

cvtColor函数的实际操作

cvtColor()函数说明

cvtColor()函数用于实现图像的色彩空间转换,一般包括四个参数,
cvtColor(src,dst,type,channels);
即源图像,目标图像,转换方式,目标图像通道数,有时候在应用时会选择将dst设置和src相同,即实现原图的转换,需要注意在这个过程中,并不是在src的数据矩阵中直接进行修改,而是编译器使用了新的内存空间对数据进行计算,然后将src.data修改为新的地址;
因此对于Mat a=b;类型,对a进行cvtConvert()实际上并不会影响到b;

代码示例

int main()
{
	Mat a = imread("test1.jpg");
`	Mat c = a;//c建立后一开始和a共用一个数据矩阵,
	Mat& d = a;//d和a完全一致
	Mat e = a.clone();
	bool t0 = (c.data == a.data);//a.data,a的数据矩阵指针
	bool t1 = (&c.data[10] == &a.data[10]);//判断a和cdata矩阵的第11个元素地址是否一致
	bool t2 = (d.data == a.data);
	bool t3 = (e.data == a.data);
	cout <<t0<<t1<<t2<<t3 << endl;//输出1110
	void* ad1 = c.data;
	cvtColor(c, c, COLOR_BGR2GRAY, 1);//对c进行处理
	void* ad2 = c.data;
	cvtColor(c, c, COLOR_GRAY2BGR, 3);//转换回去
	void* ad3 = c.data;
	cout << ad1<< endl << ad2<<endl<<ad3<<endl;//可以看出进行cvtColor操作之后c的数据矩阵存储位置实际上变了
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值