opencv 常用的数据类型(vector、contours的解释)

opencv 数据类型

        • 1、vec模板类型
          • 1.1 vec介绍
          • 1.2 vec赋值和输出
        • 2、vector< Vec4i > 数组
          • 2.1 vector< Vec4i > 介绍
          • 2.2 vector< Vec4i > 赋值输出
        • 3、vector < vector< Point>>
          • 3.1 Point点
          • 3.2 vector< Point>
          • 3.2 vector < vector< Point>>

俗话说: 工欲善其事,必先利其器,学习opencv,连一些基础的数据类型都不清楚,到后面只会寸步难行。

**

当然这句话说给自己听的,谈一下目前遇得的数据类型

1、vec模板类型

1.1 vec介绍
//opencv 中表达形式是
template<typename _Tp, int cn>; 
第一个是变量类型,第二个是个数。
eg:一些特殊的已经做了别名
typedef Vec<int, 4> Vec4i;

其他的同理,以vec4i举例;从类型里面看,就是四个整型变量 ,因为
opencv 常用的数据类型(vector、contours的解释)_第1张图片

1.2 vec赋值和输出
    Vec4i int4,temp;//四维整数;~= int a[3]这样子
	temp = { 2,3,4,5 };
	int4 = { 1,2,3,4};
	int4[0] = 0;//它的第一个整型变量
	cout << temp + int4<<endl; //opencv内部已经做了向量的加减乘除
	cout << int4 << endl;

结果自己试。

2、vector< Vec4i > 数组

2.1 vector< Vec4i > 介绍

没错,我就是卡死在这一个地方,查呀查;菜是原罪。

vector< Vec4i > hierarchy;
首先,他是一个数组的容器,里面放的是4个int的整数。
可能新司机 会有点绕。看这个解释:
vector h ,一次只放一个整数,赋值一个int
vector h1, 一次放四个整数。 给它赋一个 vec4i就可以

2.2 vector< Vec4i > 赋值输出
    Vec4i int4,temp;//四维整数;
    //可以直接赋值  int4(2,3,4,5);
	temp = { 2,3,4,5 };
	int4 = { 1,2,3,4};

	vector<Vec4i> hierarchy;
	hierarchy.push_back(temp);//vector的添加元素,自行查看c++11
	hierarchy.push_back(int4);
	
	cout << hierarchy[0] << endl;
	//输出{ 2,3,4,5 };
	cout<<hierarchy[0][3]<<endl; 
	//输出 5
	cout << hierarchy.size() << endl;
	//输出 2;

3、vector < vector< Point>>

3.1 Point点

①point点的解释
自行转到定义。
opencv 常用的数据类型(vector、contours的解释)_第2张图片
② point点的赋值与输出

Point p=(0, 1); //直接赋值
p = { 1,2 };
cout << p; //输出{1,2}
3.2 vector< Point>

vector< Point>赋值与输出
这个和第一个就很一样,不多解释。

    Point p = (0, 1),p1(0,2),p3(1,4);
	p = { 1,2 };
	vector<Point> pArray;
	pArray.push_back(p);
	pArray.push_back(p1);
	pArray.push_back(p3);
	
	cout << pArray.size() << endl;//输出为3
	cout << pArray.at(1) << endl; //输出为{0,2};
3.2 vector < vector< Point>>
    //[1] point的处理
    Point p = (0, 1),p1(0,2),p3(1,4);
	p = { 1,2 };

    //[2] vector的处理
	vector<Point> pArray, pArray1, pArray2;
	pArray.push_back(p);
	pArray.push_back(p1);
	pArray.push_back(p3);
	
	pArray1.push_back(p3);
	pArray2.push_back(p1);
	
	//[3] vector>contours的处理
	vector<vector<Point>>contours;

	contours.push_back(pArray);
	contours.push_back(pArray1);
	contours.push_back(pArray2);
	cout << contours.at(0) << endl;
	cout << contours.size() << endl;

输出结果如下:
在这里插入图片描述
看别人的不如自己,写一遍就会了。

你可能感兴趣的:(opencv)