《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
矩阵和图像操作
(1)cvGEMM函数
其结构
double cvGEMM(//矩阵的广义乘法运算const CvArr* src1,//乘数矩阵const CvArr* src2,//乘数矩阵double alpha,//1号矩阵系数const CvArr* src3,//加权矩阵double beta,//2号矩阵系数CvArr* dst,//结果矩阵int tABC = 0//变换标记
);
tABC变换标记及其相应的含义
CV_GEMM_A_T | 转置 src1 |
CV_GEMM_B_T | 转置 src2 |
CV_GEMM_C_T | 转置 src3 |
函数相应的乘法运算公式为:dst = (alpha*src1)xsrc2+(beta*src3)
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;int main()
{ double a[3][3] = { {1,0,0},{0,2,0},{0,0,3}};CvMat va=cvMat(3,3, CV_64FC1,a);cout<<"目标矩阵1:"<<endl;for(int i=0;i<3;i++){for(int j=0;j<3;j++)printf("%f\t",cvmGet(&va,i,j));cout << endl;}double b[3][3] = { {1,1,1},{1,1,1},{1,1,1}};CvMat vb =cvMat(3, 3, CV_64FC1, b);cout<<"目标矩阵2:"<<endl;for(int i=0;i<3;i++){for(int j=0;j<3;j++)printf("%f\t",cvmGet(&vb,i,j));cout << endl;}double c[3][3] = {0,0,0,0,0,0,0,0,0};CvMat vc = cvMat(3,3, CV_64FC1, c); cvGEMM(&va,&vb,1,&vc,1,&vc);cout << "结果矩阵:"<< endl;for(int i=0;i<3;i++){for(int j=0;j<3;j++)printf("%f\t",cvmGet(&vc,i,j));cout << endl;}getchar();return 0;
}
输出结果
(2)cvGetCol函数
其结构
CvMat* cvGetCol(//取出矩阵中的一列const CvArr* arr,//目标矩阵CvMat* submat,//矩阵指针int col//所要取的列的索引数
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;int main()
{ double a[3][3] = { {1,0,0},{0,2,0},{0,0,3}};CvMat va=cvMat(3,3, CV_64FC1,a);cout<<"目标矩阵:"<<endl;for(int i=0;i<3;i++){for(int j=0;j<3;j++)printf("%f\t",cvmGet(&va,i,j));cout << endl;}CvMat vb =cvMat(3,3, CV_64FC1);CvMat vc =cvMat(3,1, CV_64FC1); vc = *(cvGetCol(&va,&vb,1));cout << "所要取的列为:"<< endl;for(int i=0;i<3;i++){printf("%f\t",cvmGet(&vc,i,0));cout << endl;}getchar();return 0;
}
输出结果
(3)cvGetCols函数
其结构
CvMat* cvGetCols(//取出矩阵中的一些列const CvArr* arr,//目标矩阵CvMat* submat,//矩阵指针int start_col,//開始列。包括int end_col//结束列。不包括
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;int main()
{ double a[5][5] = { {1,0,0,0,0},{0,2,0,0,0},{0,0,3,0,0},{0,0,0,4,0},{0,0,0,0,5}};CvMat va=cvMat(5,5, CV_64FC1,a);cout<<"目标矩阵:"<<endl;for(int i=0;i<5;i++){for(int j=0;j<5;j++)printf("%f\t",cvmGet(&va,i,j));cout << endl;}CvMat vb =cvMat(5,5, CV_64FC1);CvMat vc =cvMat(5,5, CV_64FC1); vc = *(cvGetCols(&va,&vb,0,3));cout << "所要取的列为:"<< endl;for(int i=0;i<vc.rows;i++){for(int j=0;j<vc.cols;j++)printf("%f\t",cvmGet(&vc,i,j));cout << endl;}getchar();return 0;
}
输出结果
(4)cvGetDiag函数
其结构
CvMat* cvGetDiag(//取出矩阵的特定对角线const CvArr* arr,//目标矩阵CvMat* submat,//矩阵指针int diag = 0//控制标量,0为主对角,1或-1为0相邻对角。以此类推。
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;int main()
{ double a[5][5] = { {1,0,0,0,6},{0,2,0,7,0},{0,0,3,0,0},{0,9,0,4,0},{8,0,0,0,5}};CvMat va=cvMat(5,5, CV_64FC1,a);cout<<"目标矩阵:"<<endl;for(int i=0;i<5;i++){for(int j=0;j<5;j++)printf("%f\t",cvmGet(&va,i,j));cout << endl;}CvMat vb =cvMat(5,5, CV_64FC1);CvMat vc =cvMat(5,5, CV_64FC1); vc = *(cvGetDiag(&va,&vb,0));cout << "所要取的对角线为:"<< endl;for(int i=0;i<vc.rows;i++){for(int j=0;j<vc.cols;j++)printf("%f\t",cvmGet(&vc,i,j));cout << endl;}getchar();return 0;
}
输出结果
to be continued
版权声明:本文博客原创文章,博客,未经同意,不得转载。
转载于:https://www.cnblogs.com/yxwkf/p/4657695.html
《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag相关推荐
- 《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize...
矩阵和图像的操作 (1)cvMinManLoc函数 其结构 void cvMinMaxLoc(//取出矩阵中最大最小值const CvArr* arr,//目标矩阵double* min_val,// ...
- 《学习opencv》笔记——矩阵和图像处理——cvAnd、cvAndS、cvAvg and cvAvgSdv
矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算"const CvArr* src1,//第一个矩阵const ...
- 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS
矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值const CvArr* src1,//图像1const CvArr* src2,//图像2CvArr* d ...
- 《学习opencv》笔记——基本数据结构,CvMat,矩阵訪问
老板让让做一个东东.输入端要用到opencv顺便就来学习一下.买了本书<学习opencv>翻来一看,opencv1.0,去官网上一看.opencv2.49,瞬间有种蛋碎的赶脚.看着 ...
- opencv学习篇(1) 图像处理和图像识别中常用的OpenCV函数
今天开始打算整理一下上一阶段所学的内容,感觉学习的阅读的太多,知识点像一团乱麻一样,需要整理一下了. 为了能快速查阅opencv的一些基本函数,先汇总一下,以供日后查阅. 1. cvLoadIma ...
- B站台湾大学郭彦甫|MATLAB 学习笔记|08 图像处理I Image Processing
MATLAB学习笔记(08 图像处理I Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 08 1. 基本操作 读取图像 imread() 展示图像 imshow() ...
- B站台湾大学郭彦甫|MATLAB 学习笔记|09 图像处理II Image Processing
MATLAB学习笔记(09 图像处理II Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 09 1. 提出问题 题目:如何找出图片中的米粒,并且确定他们的大小? 老师 ...
- 数字图像处理学习笔记 六 彩色图像处理
目录 (一)彩色模型介绍 1.1 RGB模型 1.2 CMY.CMYK模型 1.3 HSI彩色模型 1.4 HSV模型 1.5 YCbCr 彩色空间 (二)伪彩色图像处理 (三)全彩色图像处理及彩色变 ...
- 在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置
在pycharm中学习opencv图像处理 安装python 下载python安装包 开始安装 安装pycharm社区版 下载pycharm安装包 开始安装 启动pycharm创建第一个项目 创建第一 ...
最新文章
- 按下回车表示确定提交
- c语言的编译过程,程序编译过程
- 7216:Minecraft
- Java中的面向对象
- python利用win32com读取doc和pdf内容,并保存到文件
- ubuntu16.04中成功安装ROS后,小海龟示例
- 彻底搞懂javascript中的match, exec的区别
- php 取整十整百,php取整数的方法与实例总结
- ZOJ 1730 圆桌换序
- 韩国NF功放芯片在音频音响领域的应用
- CSS 媒体查询 @media【详解】
- Linux 设置PS1变量颜色
- 机器学习学习笔记之——处理文本数据
- 算法面试中:时间复杂度和空间复杂度是什么?
- 两轮电自2.0时代开启 小牛电动以独立主见创造新物种
- 江西游——动物昆虫世界
- Extract - 凤凰牌老熊-现代支付系统设计
- Java中在指定范围内生成整型、长整型、双精度随机数流
- python 爬虫The One的 数据两种方式
- 计算机二级excel降水量分值,计算机二级Excel条件格式的8大用法,太全了!
热门文章
- Linux下mysqldump的使用
- linux命令:xargs
- 鸿蒙荣耀x10max,荣耀X10 Max有秘密武器:5G大屏手机能比4G还省电
- 【数据挖掘知识点五】层次聚类方法的理解
- 【Python-ML】神经网络激励函数-双曲正切(hyperbolic tangent,tanh)函数
- eclipse+adt下开发android微信红包自动抢(AccessibilityService类)
- Ubuntu常用翻译工具——星际译王StarDict
- Take a Field Service Journey
- Python 库安装问题-用pip安装pyHook3报错的两种常见问题和解决方法
- C# WinForm获取程序所在路径方法