【OpenCV教程】OpenCV中对矩阵的常用操作

@TOC


1.全零矩阵

CV_NODISCARD_STD static MatExpr Mat::zeros(int rows, int cols, int type);
CV_NODISCARD_STD static MatExpr Mat::zeros(Size size, int type);

CV_NODISCARD_STD static MatExpr Mat::zeros(int ndims, const int* sz, int type);
//not recommended
  • 参数如下

参数
含义

rows

行数

cols

列数

type

数据类型(CV_16F)

size

Size(宽(列数),高(行数))

  • Size与Mat中的成员函数.size()的返回值,有相同的数据类型,是[宽*高]。

  • Mat中的成员变量.size,与以上二者不同,是 rows*cols

2.全一矩阵

CV_NODISCARD_STD static MatExpr Mat::ones(int rows, int cols, int type);
CV_NODISCARD_STD static MatExpr Mat::ones(Size size, int type);

CV_NODISCARD_STD static MatExpr Mat::ones(int ndims, const int* sz, int type);
//not recommended
  • 参数如下

参数
含义

rows

行数

cols

列数

type

数据类型(CV_16F)

size

Size(宽(列数),高(行数))

3.单位矩阵

  • 参数如下

参数
含义

rows

行数

cols

列数

type

数据类型(CV_16F)

size

Size(宽(列数),高(行数))

4.矩阵转置

5.求逆矩阵

6.逗号式分隔创建矩阵

  • 常用于自定义卷积核

  • 以下为使用实例,注意括号的位置

注意 :给出的数据类型必须是基本数据类型,如int,double。不能是CV_16F等。

7.矩阵定义(只列出常用的)

  • 参数如下

参数
含义

rows

行数

cols

列数

type

数据类型(CV_16F)

size

Size(宽(列数),高(行数))

7.1 数据类型Scalar

  • Scalar(gray)

  • Scalar(blue,green,red)

8.通过ptr与at函数遍历矩阵

8.1 Vec类型

  • 以下为实例

  • 用ptr访问可以不加Vec类型,ptr访问是最快的

  • 用at访问必须加Vec类型,at访问比ptr略微慢一些

9.通过迭代器遍历矩阵(easy but very very slow)

最后更新于

这有帮助吗?