OpenCV中Mat矩阵用法详解(包括多通道矩阵创建、矩阵运算等)

本文详细介绍了OpenCV中Mat矩阵的创建、赋值和访问,包括单通道和多通道矩阵,以及矩阵的运算如加减、乘法、转置、求逆和非零元素个数。还涵盖了矩阵的变换,如通道分离和合并,旨在帮助开发者优化计算效率。
摘要由CSDN通过智能技术生成

  在做项目期间,遇到过程序计算耗时长,实时性满足不了需求的问题。通过这一段时间的接触,总结了一些OpenCV中Mat类型的用法。


目录

一、 Mat类型的创建

1.常用的有两种创建方式:

2.多通道矩阵创建:

二、Mat类型赋值和访问

1.单通道矩阵访问:

2.多通道的矩阵访问:

三、矩阵运算

1 基本概念

2 矩阵加减法

3 矩阵乘法

4 矩阵转置

5 求逆矩阵

6 计算矩阵非零元素个数

7 均值和标准差

8 求最大最小值

四、矩阵变换

1.矩阵通道分离函数

2.矩阵合并


一、 Mat类型的创建

1.常用的有两种创建方式:

       1. Mat img(2, 4, CV_8UC3, Scalar(0, 255, 255));  

       2. Mat img=cvCreatMat(2, 4, CV_8UC3);   需要注意的是这种创建方式在用完的时候需要释放。img.release();

      其中:(2,4)表示创建的是2行4列的矩阵,CV_8UC3表示数据类型。

       常用的数据类型:

           CV_8UC1// 8位无符号单通道

           CV_8UC3// 8位无符号3通道

           CV_32FC1// 32位浮点型单通道

           CV_32FC3// 32位浮点型3通道

2.多通道矩阵创建:

      需要改变的是数据类型,例如我要创建一个100行200列300通道的矩阵,并且存储的内容是double类型的。

       Mat img=cvCreatMat(100, 200, CV_8FC(300));   其中300可以根据通道数而改变。

二、Mat类型赋值和访问

1.单通道矩阵访问:

    例如对img矩阵中第一行第一列赋值(同样也适用于访问):

    img.at<double>(0,0)=0.0;

2.多通道的矩阵访问:

    对矩阵第一个通道第一行第一列赋值(同样也适用于访问):

    img.at<vec<数据类型,总通道数>>(行,列)[通道]=0.0;

三、矩阵运算

基本概念

 

 OpenCV的Mat类允许所有的矩阵运算。

 

2 矩阵加减法

 

我们可以使用"+"和"-"符号进行矩阵加减运算。

  1. cv::Mat a= Mat::eye(Size(3,2), CV_32F);

  2. cv::Mat b= Mat::ones(Size(3,2), CV_32F);

  3. cv::Mat c= a+b;

  4. cv::Mat d= a-b;

         

3 矩阵乘法<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值