OpenCV中的矩阵乘法运算

转载:http://blog.csdn.net/tangwei2014

OpenCV中矩阵乘法运算

1. Mat*Mat:

第一个矩阵的列数必须等于第二个矩阵的行数。

[0, 1, 2, 3;     [0, 0, 0;       [14, 14, 14;

0, 1, 2, 3; *  1, 1, 1;  =    14, 14, 14;

0, 1, 2, 3]      2, 2, 2;        14, 14, 14]

3, 3, 3]

2. Mat.mul(Mat):

两个矩阵维数必须相同,对应位置元素相乘。

[0, 1, 2, 3;            [ 0, 1, 2, 3;        [0, 1, 4, 9;

0, 1, 2, 3;   .mul   0, 1, 2, 3;   =    0, 1, 4, 9;

0, 1, 2, 3]              0, 1, 2, 3]         0, 1, 4, 9;]

3. Mat.dot(Mat):

对应元素相乘在加起来。

[0, 1, 2, 3;             [0, 1, 2, 3;

0, 1, 2, 3;  .dot    0, 1, 2, 3;   =    42

0, 1, 2, 3]              0, 1, 2, 3]

时间: 2024-10-23 11:56:10

OpenCV中的矩阵乘法运算的相关文章

opencv中各种矩阵乘的差别

尊重原创,转载请注明:http://blog.csdn.net/tangwei2014 OpenCV中每次遇到矩阵乘法就乱,各种翻各种查. 这次总结了一下.为了简单明了,还是让样例说话. 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3;     [0, 0, 0;       [14, 14, 14; 0, 1, 2, 3;  *  1, 1, 1;  =    14, 14, 14; 0, 1, 2, 3]      2, 2, 2;        

opencv中各种矩阵乘的区别

尊重原创,转载请注明:http://blog.csdn.net/tangwei2014 OpenCV中每次遇到矩阵乘法就乱,各种翻各种查. 这次总结了一下,为了简单明了,还是让例子说话. 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3;     [0, 0, 0;       [14, 14, 14; 0, 1, 2, 3;  *  1, 1, 1;  =    14, 14, 14; 0, 1, 2, 3]      2, 2, 2;        

opencv中 Mat矩阵申明形式

在调用opencv的时候,可能不像matlab那样直接就可以 新建矩阵.在C++中需要严格的定义矩阵形式: 在opencv中一共有显示创建Mat对象的方法: 一.使用mat()构造函数: 上图中可以发现,首先要先定义其图像尺寸 (2*3,宽为2  高为3 ).即图像的行数和列数:然后制定存储袁术的数据类型以及每个矩阵点的通道数,是浮点型存储还是字符型,是三通道还是单通道:     例如: CV_8UC3   就是代表的8位 的unsigned char 型 ,每个像素是由三个元素组成的三通道:

opencv中的矩阵操作

有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处理ROI部分 少部分函数支持COI,如果COI设置,只处理感兴趣的通道 矩阵逻辑运算 void cvAnd(const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);// void cvAndS(const CvArr* src,

OpenCV中Rect矩阵类

成员变量x.y.width.height,分别为左上角点的坐标和矩形的宽和高. 常用的成员函数有: Size()返回值为一个Size area()返回矩形的面积 contains(Point)用来判断点是否在矩形内 inside(Rect)函数判断矩形是否在该矩形内 tl()返回左上角点坐标 br()返回右下角点坐标. // 移动矩阵 Rect rectShift = rect + point; // 缩放矩阵 Rect rectScale = rect + size; // 求两矩阵交集和并集

对OpenCV中3种乘法操作的理解掌握

参考了<Opencv中Mat矩阵相乘--点乘.dot.mul运算详解 >"http://blog.csdn.net/dcrmg/article/details/52404580"的相关内容. 乘法是线性代数的基本操作,在OpenCV中有三种方法实现了乘法. 一.向量乘法 这两幅图像说明的就是向量乘法.在OpenCV中采用" . "来实现,要求是第一个矩阵的列值等于第二个矩阵的行值.且每个矩阵都是float结构. Mat A = Mat(3,3,CV_32

OpenCV快速遍历矩阵元素方法

OpenCV中Mat矩阵data数据的存储方式和二维数组不一致,二维数组按照行优先的顺序依次存储,而Mat中还有一个标示行步进的变量Step.使用Mat.ptr<DataTyte>(row) 行指针的方式定位到每一行,可快速遍历矩阵.例程如下: 1 std::cout << "The inverse matrix of K is:" << std::endl; 2 for(int i=0;i<3;i++) 3 { 4 float* data =

OpenCV 中的三大数据类型:CvMat 类型

前言 本文将介绍 OpenCV 中的矩阵结构 CvMat 并提供几个很常用的矩阵使用方法. 更多的矩阵处理函数还请参阅相关资料. CvMat 的类型定义 1 typedef struct CvMat 2 { 3 int type; // 数据类型 4 int step; // 行长度 5 int* refcount; /* 内部使用 */ 6 int hdr_refcount; /* 内部使用 */ 7 union // 指向数据区的指针 8 { 9 uchar* ptr; 10 short*

Android OpenCV中的几种基本数据结构

本文的代码基于OpenCV for Android 3.0 矩阵的类型结构 在opencv中,矩阵的类型结构被定义在opencv2/core/cvdef.h中,如下 #define CV_CN_MAX 512 #define CV_CN_SHIFT 3 #define CV_DEPTH_MAX (1 << CV_CN_SHIFT) #define CV_8U 0 #define CV_8S 1 #define CV_16U 2 #define CV_16S 3 #define CV_32S 4