《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize
矩阵和图像的操作
(1)cvMinManLoc函数
其结构
void cvMinMaxLoc(//取出矩阵中最大最小值
const CvArr* arr,//目标矩阵
double* min_val,//最小值
double* max_val,//最大值
CvPoint* min_loc = NULL,//最小值位置
CvPoint* max_loc = NULL,//最大值位置
const CvArr* mask = NULL//矩阵“开关”
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
double a[3][3] =
{
{1,2,3},
{4,5,6},
{7,8,9}
}; 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;
} double min_Val,max_Val; cvMinMaxLoc(&va,&min_Val,&max_Val); cout << "最小值为:" << endl;
cout << min_Val << endl; cout << "最大值为:" << endl;
cout << max_Val << endl; getchar();
return 0; }
输出代码
(2)cvMul函数
其结构
void cvMul(//两个矩阵相应元素相乘
const CvArr* src1,//矩阵1
const CvArr* src2,//矩阵2
CvArr* dst,//结果矩阵
double scale = 1//因子系数
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
double a[3][3] =
{
{1,2,3},
{4,5,6},
{7,8,9}
}; CvMat va = cvMat(3,3, CV_64FC1,a); double b[3][3] =
{
{2,1,2},
{1,2,1},
{2,1,2}
}; CvMat vb = cvMat(3,3, CV_64FC1,b); 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;
} cout<<"因子矩阵:"<<endl; for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
printf("%f\t",cvmGet(&vb,i,j));
cout << endl;
} cvMul(&va,&vb,&va); 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;
} getchar();
return 0; }
输出结果
(3)cvNot函数
其结构
void cvNot(//元素按位取反
const CvArr* src,//目标矩阵
CvArr* dst//结果矩阵
);
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
IplImage *src1,*src2;
src1=cvLoadImage("5.jpg");
src2=cvLoadImage("7.jpg");
cvNot(src1,src2);
cvShowImage( "原图", src1);
cvShowImage( "结果图", src2);
cvWaitKey();
return 0;
}
输出结果
(4)cvNorm函数
其结构
double cvNorm(//计算各种范式
const CvArr* arr1,//矩阵1
const CvArr* arr2 = NULL,//矩阵2
int norm_type = CV_L2,//选择范式标量
const CvArr* mask = NULL//矩阵“开关”
);
ps:arr2=NULL时,对于不同的norm_type由cvNorm()计算范式的公式
arr2非空。且norm_type不同值时函数cvNorm()计算范数的计算公式
实例代码
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
double a[3][3] =
{
{1,2,3},
{4,-12,6},
{7,8,9}
}; 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;
} double dis = cvNorm(&va,NULL,CV_C,NULL); cout<<"结果:"<<endl; cout<< dis <<endl; getchar();
return 0; }
输出结果
(5)cvNormalize函数
其结构
void cvNormalize(
const CvArr* src, //目标矩阵
CvArr* dst,//结果矩阵
double a = 1.0 // 归一化区间上限
double b = 0.0 // 归一化区间下限
int norm_type = CV_L2,//选择归一化标量
const CvArr* mask //矩阵“开关”
);
ps:函数cvNormalize()的參数norm_type可能的值
实例代码
#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,2}
}; 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;
} cvNormalize(&va,&va,1,0,CV_C); 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;
} getchar();
return 0;
}
输出结果
to be continued
版权声明:本文博客原创文章,博客,未经同意,不得转载。
《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize的更多相关文章
- 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
矩阵和图像操作 (1)cvGEMM函数 其结构 double cvGEMM(//矩阵的广义乘法运算 const CvArr* src1,//乘数矩阵 const CvArr* src2,//乘数矩阵 ...
- 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS
矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值 const CvArr* src1,//图像1 const CvArr* src2,//图像2 CvArr ...
- 《学习opencv》笔记——矩阵和图像处理——cvAnd、cvAndS、cvAvg and cvAvgSdv
矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算" const CvArr* src1,//第一个矩阵 cons ...
- 《学习opencv》笔记——基本数据结构,CvMat,矩阵訪问
老板让让做一个东东.输入端要用到opencv顺便就来学习一下.买了本书<学习opencv>翻来一看,opencv1.0,去官网上一看.opencv2.49,瞬间有种蛋碎的赶脚.看着 ...
- 基于OpenCv的人脸检测、识别系统学习制作笔记之一
基于OpenCv从视频文件到摄像头的人脸检测 在OpenCv中读取视频文件和读取摄像头的的视频流然后在放在一个窗口中显示结果其实是类似的一个实现过程. 先创建一个指向CvCapture结构的指针 Cv ...
- opencv笔记4:模板运算和常见滤波操作
time:2015年10月04日 星期日 00时00分27秒 # opencv笔记4:模板运算和常见滤波操作 这一篇主要是学习模板运算,了解各种模板运算的运算过程和分类,理论方面主要参考<图像工 ...
- opencv笔记6:角点检测
time:2015年10月09日 星期五 23时11分58秒 # opencv笔记6:角点检测 update:从角点检测,学习图像的特征,这是后续图像跟踪.图像匹配的基础. 角点检测是什么鬼?前面一篇 ...
- opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...
- 学习opencv中文版教程——第二章
学习opencv中文版教程——第二章 所有案例,跑起来~~~然而并没有都跑起来...我只把我能跑的都尽量跑了,毕竟看书还是很生硬,能运行能出结果,才比较好. 越着急,心越慌,越是着急,越要慢,越是陌生 ...
随机推荐
- Gradle构建Java Web应用:Servlet依赖与Tomcat插件(转)
Gradle的官方tutorial介绍了构建Java Web应用的基本方法.不过在使用Servlet做上传的时候会碰到问题.这里分享下如何通过Servlet上传文件,以及如何使用Gradle来构建相应 ...
- 设计模式(八)装饰器模式Decorator(结构型)
设计模式(八)装饰器模式Decorator(结构型) 1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法 ...
- 基于visual Studio2013解决算法导论之054图的邻接矩阵表示
题目 图的邻接矩阵表示 解决代码及点评 // 图的邻接矩阵表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <l ...
- 正态分布(Normal distribution)又名高斯分布(Gaussian distribution)
正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学.物理及project等领域都很重要的概率分布,在统计学的很多方面有着重大的影 ...
- 【转载】openCV轮廓操作
声明:非原创,转载自互联网,有问题联系博主 1.轮廓的提取 从图片中将目标提取出来,常常用到的是提取目标的轮廓. OpenCV里提取目标轮廓的函数是findContours(), 它的输入图像是一幅二 ...
- IOS SWIFT 网络请求JSON解析 基础一
前言:移动互联网时代,网络通信已经是手机端必不可少的功能.应用中也必不可少地使用了网络通信,增强客户端与服务器交互.使用NSURLConnection实现HTTP的通信.NSURLConnection ...
- Qt信号槽的一些事(第一次知道信号还有返回值,以及Qt::UniqueConnection)
注:此文是站在Qt5的角度说的,对于Qt4部分是不适用的. 1.先说Qt信号槽的几种连接方式和执行方式. 1)Qt信号槽给出了五种连接方式: Qt::AutoConnection 0 自动连接:默认的 ...
- JVM调优总结(十)-调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- ecosphere是什么意思_ecosphere的翻译_音标_读音_用法_例句 - 必应 Bing 词典
ecosphere是什么意思_ecosphere的翻译_音标_读音_用法_例句 - 必应 Bing 词典 ecosphere
- Activity生命周期方法的调用顺序project与測试日志
以下为測试activity的方法的运行顺序 project与測试资源地址 androidproject AndroidManifest.xml <? xml version="1. ...