OpenCv学习笔记(2)--Vec3b模板类之OpenCv源代码详解
来源:互联网 发布:windows可以删除吗 编辑:程序博客网 时间:2024/06/14 05:15
********************************************************************************************************************************【1】Vec---是一个OpenCv的---向量类模板(向量模板类)----我比较喜欢Vec把称作向量类模板,这是因为“向量类”--首相说明Vec---它是一个类,、* 然后"模板"---说明它是一个---模板类*【2】Vec---向量类模板的类模板原型:* template<typename _Tp, int cn> class Vec : public Matx<_Tp, cn, 1>*【3】我们可以看得出,它其实就是一个“一维的矩阵”,这是因为:* 1--在OpenCv中没有向量(vector)结构,任何时候需要向量,都只需要一个列矩阵(如果需要一个转置或者共轭向量,则需要一个行向量)*2--OpenCv矩阵的概念与我们线性代数课上学习的概念相比,更加抽象,这是因为线性代数中的矩阵,矩阵中的矩阵元素只能存储--数值型数* 据,而OpenCv不是这样的*【4】Vec<int,n>---就是用类型int和将向量模板类做一个实例化,实例化为一个具体的类.其中,第一个参数int--表示Vec中存储的为int类型;第二* 个参数n为一个整型值,表示Vec每个对象中存储n个int值,也就是---n维向量(列向量)*******************************************************************************************************************************//【1】下面是OpenCv中定义---定义---向量模板类----的源代码//【2】一个拥有非类型模板形参的---类模板-----向量模板类 template<typename _Tp, int cn> class Vec : public Matx<_Tp, cn, 1>{public:typedef _Tp value_type;enum { depth = DataDepth<_Tp>::value, channels = cn, type = CV_MAKETYPE(depth, channels) };//! default constructor//【1】向量类的默认构造函数Vec();Vec(_Tp v0); //!< 1-element vector constructorVec(_Tp v0, _Tp v1); //!< 2-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2); //!< 3-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2, _Tp v3); //!< 4-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4); //!< 5-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5); //!< 6-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6); //!< 7-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7); //!< 8-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8); //!< 9-element vector constructorVec(_Tp v0, _Tp v1, _Tp v2, _Tp v3, _Tp v4, _Tp v5, _Tp v6, _Tp v7, _Tp v8, _Tp v9); //!< 10-element vector constructorexplicit Vec(const _Tp* values);Vec(const Vec<_Tp, cn>& v);static Vec all(_Tp alpha);//! per-element multiplicationVec mul(const Vec<_Tp, cn>& v) const;//! conjugation (makes sense for complex numbers and quaternions)Vec conj() const;/*! cross product of the two 3D vectors. For other dimensionalities the exception is raised*/Vec cross(const Vec& v) const;//! convertion to another data typetemplate<typename T2> operator Vec<T2, cn>() const;//! conversion to 4-element CvScalar.operator CvScalar() const;/*! element access */const _Tp& operator [](int i) const;_Tp& operator[](int i);const _Tp& operator ()(int i) const;_Tp& operator ()(int i);Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_AddOp);Vec(const Matx<_Tp, cn, 1>& a, const Matx<_Tp, cn, 1>& b, Matx_SubOp);template<typename _T2> Vec(const Matx<_Tp, cn, 1>& a, _T2 alpha, Matx_ScaleOp);};//【3】用typedef关键字给---向量类模板----template<typename _Tp, int cn> class Vec//【1】向量模板类Vec的实例化,并且给相应实例的Vec向量模板类实例---指定新的名字//【1】Vec2b--这是一个具体的--类类型---这个类类型实例话的类对象表示如下所示://【1】Vec2b---表示每个Vec2b对象中,可以存储2个char(字符型)数据typedef Vec<uchar, 2> Vec2b; 、//【2】Vec3b---表示每一个Vec3b对象中,可以存储3个char(字符型)数据,比如可以用这样的对象,去存储RGB图像中的 //一个像素点typedef Vec<uchar, 3> Vec3b;//【3】Vec4b---表示每一个Vec4b对象中,可以存储4个字符型数据,可以用这样的类对象去存储---4通道RGB+Alpha的图 //像中的像素点typedef Vec<uchar, 4> Vec4b; //【1】Vec2s---表示这个类的每一个类对象,可以存储2个short int(短整型)的数据typedef Vec<short, 2> Vec2s;typedef Vec<short, 3> Vec3s;typedef Vec<short, 4> Vec4s;typedef Vec<ushort, 2> Vec2w;typedef Vec<ushort, 3> Vec3w;typedef Vec<ushort, 4> Vec4w;typedef Vec<int, 2> Vec2i;typedef Vec<int, 3> Vec3i;typedef Vec<int, 4> Vec4i;typedef Vec<int, 6> Vec6i;typedef Vec<int, 8> Vec8i;typedef Vec<float, 2> Vec2f;typedef Vec<float, 3> Vec3f;typedef Vec<float, 4> Vec4f;typedef Vec<float, 6> Vec6f;typedef Vec<double, 2> Vec2d;typedef Vec<double, 3> Vec3d;typedef Vec<double, 4> Vec4d;typedef Vec<double, 6> Vec6d;
0 0
- OpenCv学习笔记(2)--Vec3b模板类之OpenCv源代码详解
- OpenCV学习笔记(15)Opencv之<Vec3b>
- Opencv之<Vec3b>
- Opencv之<Vec3b>
- OpenCv学习笔记(三)---OpenCv中基本数据类型--Point,Size,Rect,Scalar,Vec3b类类型的详细解释及其OpenCv中源代码的详细分析
- Opencv--<Vec3b>
- Opencv之<Vec3b>是什么东东
- Opencv之<Vec3b>是什么东东
- opencv笔记之模板匹配
- opencv学习之模板匹配
- Opencv学习之模板匹配
- OpenCV学习笔记----------OpenCV数据结构Mat详解
- OpenCV学习笔记(18)OpenCV之基本绘图2
- OpenCV 学习笔记之Mat类讲解
- OpenCV学习2 模板匹配
- OPENCV学习笔记(2)
- OpenCV 2学习笔记
- opencv 学习笔记2
- [FAQ09452]手机cached free memory(剩余内存)计算方法
- [C++]Stack with Template
- Java基础知识IO流(文本文件读取方式二)
- Android自定义view的三个构造函数理解
- 【BestCoder Round #81 (div.2)】【HDU5670&5671&5672】题意&题解&代码(C++)
- OpenCv学习笔记(2)--Vec3b模板类之OpenCv源代码详解
- Java Servlet多线程问题
- 聊聊的Android缓存(三)
- 【BZOJ1264】[AHOI2006]基因匹配Match【DP】【LCS】【树状数组】
- SpringMVC 报错java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path
- 一个简要的示例说明Linux内核的container_of 的用法
- 复习继承和接口、抽象类
- C/C++学习笔记(2)--函数模板template<typename T>,类模板详解(1)
- USB识别与传输