【opencv】图像数字化——矩阵的运算( 5 乘法运算)

news/2024/11/14 19:38:48/

5 乘法运算

5.1使用“*”运算符

  • 对于Mat对象的乘法,两个Mat只能同时是float或者double类型,对于其它数据类型的矩阵乘法会报错
  • src1的列数等于src2的行数
  • m×n * n×p=m×p
#include <opencv2/core/core.hpp>  
#include<iostream>  
using namespace std;
using namespace cv;
int main(){Mat src1 = (Mat_<double>(2, 3) << 1, 2, 3, 4, 5, 6);Mat src2 = (Mat_<double>(3, 2) << 6, 5, 4, 3, 2, 1);Mat dst;dst=src1*src2;//dst = src1 / src2;cout << src1 << endl;cout << src2 << endl;cout << dst << endl;return 0;
}

在这里插入图片描述

  • 双通道矩阵相乘,相当于复数
#include <opencv2/core/core.hpp>  
#include<iostream>  
using namespace std;
using namespace cv;
int main(){Mat src1 = (Mat_<Vec2f>(2, 1) << Vec2f(1, 2), Vec2f(3, 4));Mat src2 = (Mat_<Vec2f>(1, 2) << Vec2f(10, 20), Vec2f(5, 15));Mat dst=src1*src2;cout << src1 << endl;cout << src2 << endl;cout << dst << endl;return 0;
}

在这里插入图片描述
在这里插入图片描述

5.2使用gemm函数

void gemm(InputArray src1,InputArray src2,double alpha,InputArray src3,double beta,InputOutputArray dst,int flags=0)
  • gemm:矩阵乘法
  • src1:输入类型是CV_32F或者CV_64F的单/双通道矩阵
  • src2 :输入矩阵,类型同src1
  • alpha:src1与src2相乘后的系数
  • src3:输入矩阵,类型与src1相同
  • beta:src3的系数
  • dst:输出矩阵
  • flags:控制 src1、 src2、 src3是否转置来实现矩阵之间不同的运算
  • 0:没有转置;
  • CV_GEMM_A_T:表示src1转置;
  • CV_GEMM_B_T:表示src2转置;
  • CV_GEMM_C_T:表示src3转置;
  • 也可以:CV_GEMM_A_T+CV_GEMM_C_T;
  • gemm只接受CV_32FC1、CV_64FC1、CV_32FC2、CV_64FC2数据类型的Mat
#include <opencv2/core/core.hpp>  
#include<iostream>  
using namespace std;
using namespace cv;
int main(){Mat src1 = (Mat_<double>(2, 3) << 1,2,3,4,5,6);Mat src2 = (Mat_<double>(3, 2) << 6,5,4,3,2,1);Mat dst;gemm(src1, src2, 1, NULL, 0, dst, 0);cout << src1 << endl;cout << src2 << endl;cout << dst << endl;return 0;
}

在这里插入图片描述


http://www.ppmy.cn/news/49037.html

相关文章

学生成绩管理系统winform+SqlServer

主要技术&#xff1a; 基于C#winform架构和sql server数据库 功能模块&#xff1a; 学生选课&#xff0c; 可以查询个学期各科成绩 查看或者选择选课信息 显示当前课表&#xff0c;管理员后台管理 开设课程 课程查询&#xff08;上课时间和地点&#xff09; 录入该课程下的…

第三十三章 配置镜像 - 从镜像中删除镜像数据库

文章目录 第三十三章 配置镜像 - 从镜像中删除镜像数据库从镜像中删除镜像数据库在镜像中使用托管密钥加密加密镜像数据库 第三十三章 配置镜像 - 从镜像中删除镜像数据库 从镜像中删除镜像数据库 可以通过镜像监视器将数据库从镜像中删除&#xff0c;将其从镜像转换为非镜像…

30个超级有用的JavaScript单行代码

在这篇文章中&#xff0c;我列出了一个系列的 30 个 JavaScript 单行代码&#xff0c;它们在使用 vanilla js&#xff08;≥ ES6&#xff09;进行开发时非常有用。它们也是使用该语言在最新版本中为我们提供的所有功能来解决问题的优雅方式。 我将它们分为以下5大类&#xff1…

Nginx专题-基于多网卡的主机配置

文章目录 Nginx 基于多网卡的主机实现一、虚拟机前置环境准备ifcfg-ens32配置文件的内容参考ifcfg-ens33配置文件的内容 二、案例演示修改nginx.conf配置文件解决中文乱码 Nginx 基于多网卡的主机实现 一、虚拟机前置环境准备 点击虚拟机右下角的 红色标框按钮&#xff0c;然后…

一文搞懂新型IO调度器BFQ简介

Linux io调度器有很多种&#xff0c;大多数调度器都经受住了各种市场环境的长时间验证&#xff0c;稳定性、性能得到各种用户的认可&#xff0c;但新的调度器依然展露头角&#xff0c;在4.12内核中出现了一个新的bfq调度器&#xff0c;这个调度器将取代曾经的辉煌的cfq调度器。…

uni-app使用时遇到的坑

一.uni-app开发规范 1.微信小程序request请求需要https 小程序端&#xff1a; 在本地运行时&#xff0c;可以使用http 但是预览或者上传时&#xff0c;使用http无法请求 APP端&#xff1a; 一般APP可以使用http访问 高版本的APP可能需要用https访问 二. uni-app项目 配置App升…

vue数据绑定详解

vue2 中关于数组和对象数据观察时有做什么特殊处理 在 Vue2 中&#xff0c;对于数组和对象的数据观察有一些特殊处理。 对于数组&#xff0c;Vue2 使用了一种名为“拦截器”的技术来实现数据观察。具体来说&#xff0c;Vue2 会通过修改 JavaScript 原生数组方法&#xff08;如…

Jeston NANO 配置并安装 torch+ torchvision

由于nano的arm64架构&#xff0c;所以用它进行深度学习配置部署时会与用普通电脑&#xff08;x86&#xff09;有所不同: x86架构 x86架构是最常用的计算机架构之一&#xff0c;它是基于英特尔的8086处理器所设计的&#xff0c;后来又逐渐发展成x86-64架构&#xff0c;支持64位处…