矩阵和图像操作

(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相关推荐

  1. 《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize...

    矩阵和图像的操作 (1)cvMinManLoc函数 其结构 void cvMinMaxLoc(//取出矩阵中最大最小值const CvArr* arr,//目标矩阵double* min_val,// ...

  2. 《学习opencv》笔记——矩阵和图像处理——cvAnd、cvAndS、cvAvg and cvAvgSdv

    矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算"const CvArr* src1,//第一个矩阵const ...

  3. 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS

    矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值const CvArr* src1,//图像1const CvArr* src2,//图像2CvArr* d ...

  4. 《学习opencv》笔记——基本数据结构,CvMat,矩阵訪问

        老板让让做一个东东.输入端要用到opencv顺便就来学习一下.买了本书<学习opencv>翻来一看,opencv1.0,去官网上一看.opencv2.49,瞬间有种蛋碎的赶脚.看着 ...

  5. opencv学习篇(1) 图像处理和图像识别中常用的OpenCV函数

    今天开始打算整理一下上一阶段所学的内容,感觉学习的阅读的太多,知识点像一团乱麻一样,需要整理一下了. 为了能快速查阅opencv的一些基本函数,先汇总一下,以供日后查阅. 1.   cvLoadIma ...

  6. B站台湾大学郭彦甫|MATLAB 学习笔记|08 图像处理I Image Processing

    MATLAB学习笔记(08 图像处理I Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 08 1. 基本操作 读取图像 imread() 展示图像 imshow() ...

  7. B站台湾大学郭彦甫|MATLAB 学习笔记|09 图像处理II Image Processing

    MATLAB学习笔记(09 图像处理II Image Processing) 如果想获得更好浏览体验的朋友可以转到下面链接 09 1. 提出问题 题目:如何找出图片中的米粒,并且确定他们的大小? 老师 ...

  8. 数字图像处理学习笔记 六 彩色图像处理

    目录 (一)彩色模型介绍 1.1 RGB模型 1.2 CMY.CMYK模型 1.3 HSI彩色模型 1.4 HSV模型 1.5 YCbCr 彩色空间 (二)伪彩色图像处理 (三)全彩色图像处理及彩色变 ...

  9. 在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置

    在pycharm中学习opencv图像处理 安装python 下载python安装包 开始安装 安装pycharm社区版 下载pycharm安装包 开始安装 启动pycharm创建第一个项目 创建第一 ...

最新文章

  1. 按下回车表示确定提交
  2. c语言的编译过程,程序编译过程
  3. 7216:Minecraft
  4. Java中的面向对象
  5. python利用win32com读取doc和pdf内容,并保存到文件
  6. ubuntu16.04中成功安装ROS后,小海龟示例
  7. 彻底搞懂javascript中的match, exec的区别
  8. php 取整十整百,php取整数的方法与实例总结
  9. ZOJ 1730 圆桌换序
  10. 韩国NF功放芯片在音频音响领域的应用
  11. CSS 媒体查询 @media【详解】
  12. Linux 设置PS1变量颜色
  13. 机器学习学习笔记之——处理文本数据
  14. 算法面试中:时间复杂度和空间复杂度是什么?
  15. 两轮电自2.0时代开启 小牛电动以独立主见创造新物种
  16. 江西游——动物昆虫世界
  17. Extract - 凤凰牌老熊-现代支付系统设计
  18. Java中在指定范围内生成整型、长整型、双精度随机数流
  19. python 爬虫The One的 数据两种方式
  20. 计算机二级excel降水量分值,计算机二级Excel条件格式的8大用法,太全了!

热门文章

  1. Linux下mysqldump的使用
  2. linux命令:xargs
  3. 鸿蒙荣耀x10max,荣耀X10 Max有秘密武器:5G大屏手机能比4G还省电
  4. 【数据挖掘知识点五】层次聚类方法的理解
  5. 【Python-ML】神经网络激励函数-双曲正切(hyperbolic tangent,tanh)函数
  6. eclipse+adt下开发android微信红包自动抢(AccessibilityService类)
  7. Ubuntu常用翻译工具——星际译王StarDict
  8. Take a Field Service Journey
  9. Python 库安装问题-用pip安装pyHook3报错的两种常见问题和解决方法
  10. C# WinForm获取程序所在路径方法