IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> opencv基础数据类型及其基本函数 -> 正文阅读

[人工智能]opencv基础数据类型及其基本函数

一. 基本数据类型

1.一些基本类型缩写:

bwsifd
unsigned charunsigned shortshortintfloatdouble

2. Point类

Point类属于模板类, 简单开销小. Point类通过别名调用, 并使用 . 访问成员变量, 例如:

cv::Point2icv::Point2fcv::Point2dcv::Point3icv::Point3fcv::Point3d

操作函数如下:

操作示例
默认构造函数cv::Point2i p;
cv::Point3i p;
复制构造函数cv::Point3f p2(p1);
值构造函数cv::Point2i p(x0,x2);
cv::Point3d p(x0, x1, x2);
构造成固定向量类(cv::Vec3f) p;
成员函数p.x, p.y, //三维中:P.Z
点乘float x = p1.dot(p2);
双精度点乘double x = p1.dot(p2)
叉乘p1.cross(p2) //三维中使用
判断一个点p是否在矩形r内p.inside? //三维中使用

可以转化到固定向量类.

3. Scalar类

一个四维点类. 所有成员都是双精度浮点数. 一些操作函数如下:

操作示例
默认构造函数cv::Scalar s;
复制构造函数cv::Scalar s2(s1);
值构造函数cv::Scalar s(x0);
cv::Scalar s(x0, x1, x2, x3);
元素相乘s1.mul(s2);
(四元数)共轭s.conj(); //return cv::Scalar(s0, -s1, -s2, 0s2);
(四元数)真值测试s.isReal(); //return true, if s1 == s2 == s3 == 0

4. size类

与Point类类似, 只要区别在于Point的数据成员是x和y(点), 而size类对应的数据成员是width和height.

size类拥有的三个别名分别为:

cv::Sizecv::Size2icv::Size2f

支持的操作为:

操作示例
默认构造函数cv::Size sz
cv::Size2i sz
cv::Size2f sz;
复制构造函数cv::SIze sz2(sz1)
值构造函数cv::Size2f sz(w, h)
成员访问sz.width;
sz.height
计算面积sz.area()

不支持转换到固定向量类.

5. cv::Rect类

矩形类包含Point类的成员x和y(矩形左上角)和size类的成员width和height(代表的矩形的大小和位置).

但矩阵并非继承自Point类或者size类, 所以不具有其相关操作.

支持的操作:

操作示例
默认构造函数cv::Rect r
复制构造函数cv::Rect r2(r1)
值构造函数cv::Rect(x, y, width, height)
由起始点和大小构造cv::Rect(p, sz)
由两个对角构造cv::Rect(p1, p2)
成员访问r.x; r.y; r.width; r.height
计算面积r.area()
提取左上角r.tl()
提取右下角r.br()
判断点p是否在矩形内r.contains§

覆写操作符:

操作示例
矩形r1和矩形r2的交集cv::Rect r3 = r1 & r2;
r1 &= r2;
同时包含矩形r1和矩形r2的最小面积矩形cv::Rect r3 = r1 | r2;
r1 |= r2;
矩形r平移x个数量cv::Rect rx = r + x;
r += x
矩形r扩大s大小cv::Rect rs = r + s;
r += s;
比较矩形r1与矩形r2是否相等bool eq = (r1 == r2)
比较矩形r1与矩形r2是否不想等bool ne = (r1 != r2)

6. cv::RotatedRect类

包含一个中心点cv::Point2f, 一个大小cv::Size2f和一个角度float的容器.

其中float表示图形围绕中心点旋转的角度.

cv::RotatedRect和cv::Rect有一个非常重要的不同点是cv::RotatedRect是以中心为原点, 而cv::Rect则以左上角为原点. 支持的操作:

操作示例
默认构造函数cv::RotatedRect rr()
复制构造函数cv::RotatedRect rr2(rr1)
从两个点构造cv::RotatedRect(p1, p2)
值构造函数, 需要一个中心点point,
一个大小size和一个角度float
cv::Rotated rr(point, size, float)
成员访问rr.center, rr.size, rr.float
返回四个角的列表rr.points(ptr[4])

7. 固定矩阵类

固定矩阵类需要在创建时知道矩阵的纬度(大小). 其分配和清楚都很快. 在小型矩阵(2x2, 3x3, 等等)矩阵上做过特别的优化.

一般来说, 在编译的时候知道矩阵的大小的时候使用固定矩阵类(比如相机矩阵), 而如果对象是一个图像或大型点列表这样的大数组的时候, 通常使用cv::Mat.

cv::Matx支持的操作:

操作示例
默认构造函数cv::Matx33f m33f;
cv::Matx43d m43d;
复制构造函数cv::Matx22d m22d(n22d)
值构造函数cv::Matx21f m(x0, x1);
cv::Matx44d m(x0, x1, …, x14, x15);
含相同元素的矩阵m33f = cv::Matx33f::all( x )
全零矩阵m23d = cv::Matx23d::zeros();
全一矩阵m16f = cv::Matx16f::ones();
创建一个单位矩阵m33f = cv::Matx33f::eye();
成员访问m( i, j ), m( i )

8. 固定向量类

固定向量类从固定矩阵类派生出来, 可以说固定向量类是列为1的cv::Matx<>.

cv::Vec支持的操作:

操作示例
默认构造函数Vec2s v2s;
Vec6f v6f;
复制构造函数Vec3f u3f( v3f );
值构造函数Vec2f v2f(x0, x1);
Vec6d v6d(x0, x1, x2, x3, x4, x5);
成员访问v4f[ i ];
v3w( j ); //operator()和operator[]都可以
向量叉乘v3f.cross( u3f )

9. 复数类

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:32:33  更:2021-10-25 12:33:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:28:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码