opencv 数据类型
俗话说: 工欲善其事,必先利其器,学习opencv,连一些基础的数据类型都不清楚,到后面只会寸步难行。
**
当然这句话说给自己听的,谈一下目前遇得的数据类型
1、vec模板类型
1.1 vec介绍
//opencv 中表达形式是
template<typename _Tp, int cn>;
第一个是变量类型,第二个是个数。
eg:一些特殊的已经做了别名
typedef Vec<int, 4> Vec4i;
其他的同理,以vec4i举例;从类型里面看,就是四个整型变量 ,因为
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点的解释
自行转到定义。
② 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<Point>的处理
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<vector<Point>>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;
输出结果如下:
看别人的不如自己,写一遍就会了。