cvtColor()实际操作

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的数据矩阵存储位置实际上变了

你可能感兴趣的:(openCV入门系列)