opencv中Mat的使用

标签: opencv
7人阅读 评论(0) 收藏 举报
分类:

一、Mat类相关的操作

Mat构造函数:

Mat m=Mat(rows, cols, type);//指定m的行数、列数和数据类型

Mat m=Mat(Size(width,height), type);//指定m的大小与数据类型


二、矩阵操作

abs

函数描述:计算矩阵每一个元素的绝对值。

函数原型:

C++: MatExpr abs(const Mat& m) 
C++: MatExpr abs(const MatExpr& e) 

参数:

    m是一个矩阵

    e是一个矩阵表达式

add

函数描述:一个矩阵的元素加上另一个矩阵的相应元素,或加上一个标量

函数原型:

参数:

    src1是第一个输入矩阵或是一个标量

    src1是第二个输入矩阵或是一个标量

    dst 是一个与输入矩阵具有相同大小和通道个数的矩阵,它的深度由dtype或src1/src2的类型进行定义。 

    mask是一个待选择的操作,它是一个8位单通道矩阵,它指定输出矩阵的哪些元素被改变。

    dtype是一个待选择的操作,它指定输出矩阵的深度。

注意:如果输出矩阵dst的深度为CV_32S,则在结果发生溢出时会得到不正确的结果。

bitwise_and

bitwise_not

bitwise_or

bitwise_xor

calcCovarMatrix

函数描述:计算一组矩阵的协方差矩阵。

函数原型:

C++: void calcCovarMatrix(const Mat* samples, int nsamples, Mat& covar, Mat& mean, int flags, int ctype=CV_64F)
C++: void calcCovarMatrix(InputArray samples, OutputArray covar, InputOutputArray mean, int flags, int ctype=CV_64F)

参数:

    samples: 存储于一组矩阵或以行列形式存储于单个矩阵的样本

    nsamples: 样本的个数

cartToPolar

函数描述:计算一组虚数的幅值和角度,得到的角度的精度大概为0.3度。

函数原型:

void cartToPolar(InputArray x, InputArray y, OutputArray magnitude, OutputArray angle, bool angleInDegrees=false)

参数:

    x是由x-坐标组成的向量

    y是由-y坐标组成的向量

    magnitude是计算得到的幅值向量,它的大小和数据类型与输入参数x相同。


solvePoly 

函数描述:求解一个多项式方程的实数解或复数解。

函数原型:

C++: double solvePoly(InputArray coeffs, OutputArray roots, int maxIters=300 ) 
参数:

    coeffs是由多项式的系数组成的数组。

    roots是由多项式方程根组成的数组。

    maxIters是执行求解多项式方程解的算法的最大迭代次数。


sort

函数描述:对矩阵的每一行或每一列进行排序。

函数原型:

C++: void sort(InputArray src, OutputArray dst, int flags) 

split

函数描述:将一个矩阵的每个通道分离,得到多个由每一个通道组成的单通道矩阵。

函数原型:

C++: void split(const Mat& src, Mat* mvbegin)
C++: void split(InputArray m, OutputArrayOfArrays mv) 

sqrt

函数描述:计算一个矩阵每一个元素的平方根。

函数原型:

C++: void sqrt(InputArray src, OutputArray dst) 

参数:

    src是浮点型输入矩阵。

    dst是一个数据类型和大小与输入矩阵src相同的矩阵。

注意:该函数结果的精度与内置函数std::sqrt大致相同。

subtract

函数描述:一个矩阵的元素减去另一个矩阵的相应元素,或减去一个标量

函数原型:

c++: void subtract(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1)

参数:

    src1是第一个输入矩阵或是一个标量

    src1是第二个输入矩阵或是一个标量

    dst 是一个与输入矩阵具有相同大小和通道个数的矩阵,它的深度由dtype或src1/src2的类型进行定义。 

    mask是一个待选择的操作,它是一个8位单通道矩阵,它指定输出矩阵的哪些元素被改变。

    dtype是一个待选择的操作,它指定输出矩阵的深度。

注意:如果输出矩阵dst的深度为CV_32S,则在结果发生溢出时会得到不正确的结果。


SVD::SVD

函数描述:SVD的构造函数。

C++: SVD::SVD()
C++: SVD::SVD(InputArray src, int flags=0)

SVD::operator ()

函数描述:对矩阵进行SVD分解。

函数原型:

C++: SVD& SVD::operator()(InputArray src, int flags=0)

SVD::compute

函数描述:对矩阵进行SVD分解。

函数原型:

C++: static void SVD::compute(InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags=0)
C++: static void SVD::compute(InputArray src, OutputArray w, int flags=0 )

SVD::solveZ

函数描述:求解一个欠定奇异线性系统。

函数原型:

C++: static void SVD::solveZ(InputArray src, OutputArray dst)

SVD::backSubst

函数描述:执行奇异值反替换。

函数原型:

C++: void SVD::backSubst(InputArray rhs, OutputArray dst) const
C++: static void SVD::backSubst(InputArray w, InputArray u, InputArray vt, InputArray rhs, OutputArray dst)

sum

函数描述:计算矩阵元素的和。若矩阵含有多个通道,则返回由矩阵每一个通道的和组成的向量

函数原型:

Scalar sum(InputArray src)

theRNG

函数描述:返回默认的随机数发生器。

函数原型:

C++: RNG& theRNG()

trace

函数描述:计算矩阵的迹,即计算矩阵对角元素的和

函数原型:

Scalar trace(InputArray mtx)

 






1、opencv中矩阵的拼接–vconcat和hconcat函数 
vconcat函数:用于两个Mat矩阵或者图像的水平拼接。 
hconcat函数:用于两个Mat矩阵或者图像的垂直拼接。
vconcat(B,C,A); // 等同于A=[B;C]--比如矩阵B为M*N,矩阵C为M*H,则矩阵A为M*(N+H)
hconcat(B,C,A); // 等同于A=[B  C]--比如矩阵B为M*N,矩阵C为H*N,则矩阵A为(M+H)*N
查看评论

OpenCV中Mat的基本用法

一、矩阵基础操作: Mat image(240, 320, CV8UC3); 第一个参数是rows,该矩阵的行数;第二个参数是cols,该矩阵的列数;第三个参数是该矩阵元素的类型。这句话表示创建一...
  • u012655441
  • u012655441
  • 2017年04月05日 16:02
  • 3004

【转】OpenCV中Mat的详解

【转】OpenCV中Mat的详解 每次碰到Mat都得反复查具体的用法,网上的基础讲解不多,难得看到一篇,赶快转来收藏~ 原文地址:http://www.opencvchina.com/th...
  • sinat_31802439
  • sinat_31802439
  • 2015年11月28日 13:21
  • 2967

将Opencv2的Mat类型数据显示到MFC窗口上

1. 前言      在编写Opencv的相关程序的时候需要将Mat类型的图像数据显示在MFC窗口上,在本文中主要介绍两种方式的显示CImage类和CvvImage类。 2. 基于CImage...
  • m_buddy
  • m_buddy
  • 2016年10月30日 17:15
  • 1985

Opencv定义和输出基于Mat的vector

#include #include #include using namespace std; using namespace cv; int main() { vector v; v.pus...
  • qq_23880193
  • qq_23880193
  • 2015年08月23日 10:16
  • 1545

sizeof ( )——在学习openCV中 create matrix 时发现的问题

int  data[9]={1,2,3,4,5,6,7,8,9};       int * pData =data;        if(*pData == *data)              c...
  • iamlijiangtao
  • iamlijiangtao
  • 2009年05月16日 10:38
  • 819

Java OpenCV开发——Mat部分使用

只简单列举我在Java OpenCV开发中用到的Mat的使用方法。OpenCV和JavaCV的使用方式不太一样,这里只列举OpenCV下的使用方式。 读取图片: Mat img = Imgcodec...
  • tryflys
  • tryflys
  • 2017年12月26日 21:44
  • 151

Buffer转OpenCV格式

Buffer指的是unsigned char* 类型的图片内容,将Buffer转为openCV的格式,便于查看和保存,用来进行中间步骤的观察和调试。 1.opencv 1.0版本 uchar* 数...
  • fangjin_kl
  • fangjin_kl
  • 2014年03月31日 14:13
  • 981

opencv中Mat类型数据的索引修改和多通道数据提

//2014年4月18日15:43:42 #include #include "highgui.h" #include "cxcore.h" using namespace std; using ...
  • sillyboy1104
  • sillyboy1104
  • 2014年04月18日 15:41
  • 989

OpenCV中Mat的type

opencv中Mat存在各种类型,其中mat有一个type()的函数可以返回该Mat的类型。类型表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类...
  • jeffdeen
  • jeffdeen
  • 2016年09月01日 16:57
  • 4648

【OpenCV笔记 04】OpenCV中显式创建Mat对象的5种方法

创建一个Mat对象有多种方法,本文将列举最为常用的五种: 1.使用Mat()构造函数, 2.利用create()函数创建,用来为已有矩阵开辟内存,不能用来初始化 3.类似于Matlab式的初始化方...
  • sinat_34707539
  • sinat_34707539
  • 2016年07月13日 20:51
  • 879
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 562
    排名: 8万+
    最新评论