《学习opencv》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis
矩阵和图像的操作
(1)cvInRange函数
其结构
- void cvInRange(//提取图像中在阈值中间的部分
- const CvArr* src,//目标图像
- const CvArr* lower,//阈值下限
- const CvArr* upper,//阈值上限
- CvArr* dst//结果图像
- );
实例代码
- #include <cv.h>
- #include <highgui.h>
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- int main()
- {
- IplImage *src1,*src2,*dst11,*dst12,*dst13,*dst21,*dst22,*dst23;
- src1=cvLoadImage("5.jpg");
- src2=cvLoadImage("7.jpg");
- dst11 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
- dst12 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
- dst13 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
- dst21 = cvCreateImage(cvSize(src2->width, src1->height), IPL_DEPTH_8U, 1);
- dst22 = cvCreateImage(cvSize(src2->width, src1->height), IPL_DEPTH_8U, 1);
- dst23 = cvCreateImage(cvSize(src2->width, src1->height), IPL_DEPTH_8U, 1);
- cvSplit(src1, dst11, dst12, dst13, 0);
- cvSplit(src2, dst21, dst22, dst23, 0);
- cvInRange(dst12,dst21,dst23,dst23);
- cvShowImage( "原图", src1);
- cvShowImage("过滤图",src2);
- cvShowImage( "结果图", dst23);
- cvWaitKey();
- return 0;
- }
输出结果
(2)cvInRangeS函数
其结构
- void cvInRangeS(//提取图像中在阈值中间的部分
- const CvArr* src,//目标图像
- CvScalar lower,//阈值下限
- CvScalar upper,//阈值上限
- CvArr* dst//结果图像
- );
实例代码
- #include <cv.h>
- #include <highgui.h>
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- int main()
- {
- IplImage *src1,*src2,*dst11,*dst12,*dst13,*dst21,*dst22,*dst23;
- src1=cvLoadImage("5.jpg");
- dst11 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
- dst12 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
- dst13 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
- CvScalar cs1;
- cs1.val[0] = 0;
- cs1.val[1] = 0;
- cs1.val[2] = 0;
- cs1.val[3] = 0;
- CvScalar cs2;
- cs2.val[0] = 80;
- cs2.val[1] = 0;
- cs2.val[2] = 0;
- cs2.val[3] = 0;
- cvSplit(src1, dst11, dst12, dst13, 0);
- cvInRangeS(dst11,cs1,cs2,dst13);
- cvShowImage( "原图", src1);
- cvShowImage( "变单通过程图", dst11);
- cvShowImage( "结果图", dst13);
- cvWaitKey();
- return 0;
- }
输出结果
(3)cvInvert函数
其结构
- double cvInvert(//矩阵取逆
- const CvArr* src,//目标矩阵
- CvArr* dst,//结果矩阵
- int method = CV_LU//逆运算方法
- );
当中method有
方法的參数值 | 含义 |
CV_LU | 高斯消去法 |
CV_SVD | 神秘值分解 |
CV_SVD_SYM | 对称矩阵的SVD |
实例代码
- #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;
- }
- cvInvert(&va,&va);
- cout << "其逆矩阵为:";
- 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;
- }
输出结果
(4)cvMahalonobis函数
其结构
- CvSize cvMahalonobis(//计算马氏距离
- const CvArr* vec1,//样本向量
- const CvArr* vec2,//平均值
- CvArr* mat//协方差的逆
- );
ps:关于什么是马氏向量,我也研究了半天,找了一些资料算是弄明确了个大概。
关于马氏距离,定义的话自己百度百科即可。
关于理解和解释请參照博客:点击打开链接 通俗易懂
关于以下的代码实例的数据来源:点击打开链接
实例代码
- #include <cv.h>
- #include <highgui.h>
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- int main()
- {
- double a1[4] = {3,4,5,6};
- double a2[4] = {2,2,8,4};
- double b[4] = {2.5, 3, 6.5, 5};
- double c[4][4] =
- {
- {0.25,0.50,-0.75,0.50},
- {0.50,1.00,-1.50,1.00},
- {-0.75,-1.50,2.25,-1.50},
- {0.50,1.00,-1.50,1.00}
- };
- CvMat va1 = cvMat(1,4, CV_64FC1,a1);
- CvMat va2 = cvMat(1,4, CV_64FC1,a2);
- CvMat vb = cvMat(1,4, CV_64FC1,b);
- CvMat vc = cvMat(4,4, CV_64FC1,c);
- cvInvert(&vc,&vc,CV_SVD); //协方差取逆,这个函数前面讲过
- double r1 = cvMahalanobis(&va1,&vb,&vc);
- double r2 = cvMahalanobis(&va2,&vb,&vc);
- cout << "样本1的马氏距离:"<<endl;
- cout<<r1<<endl;
- cout << "样本2的马氏距离:"<<endl;
- cout<<r2<<endl;
- getchar();
- return 0;
- }
输出实例
to be continued
《学习opencv》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis的更多相关文章
- 《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS
矩阵和图像的操作 (1)cvCalcCovarMatrix函数 其结构 void cvCalcCovarMatrix(计算给定点的均值和协方差矩阵 const CvArr** vects,//给定向量 ...
- 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS
矩阵和图像的操作 (1)cvSetIdentity函数 其结构 void cvSetIdentity(//将矩阵行与列相等的元素置为1.其余元素置为0 CvArr* arr//目标矩阵 ); 实例代码 ...
- 《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv
矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算" const CvArr* src1,//第一个矩阵 cons ...
- 《学习opencv》笔记——矩阵和图像操作——cvAbs,cvAbsDiff and cvAbsDiffS
矩阵和图像的操作 (1)cvAbs,cvAbsdiff,cvAbsDiffS 它们的结构为: void cvAbs( //取src中元素的绝对值,写到dst中 const CvArr* src, co ...
- 《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor
矩阵和图像的操作 (1)cvCrossProduct函数 其结构 void cvCrossProdust(//计算两个三维向量的叉积 const CvArr* src1, const CvArr* s ...
- 《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero
矩阵和图像的操作 (1)cvConvertScale函数 其结构: void cvConvertScale( //进行线性变换,将src乘scale加上shift保存到dst const CvArr* ...
- opencv笔记2:图像ROI
time:2015年 10月 03日 星期六 12:03:45 CST # opencv笔记2:图像ROI ROI ROI意思是Region Of Interests,感兴趣区域,是一个图中的一个子区 ...
- OpenCV —— 矩阵和图像操作
cvAbs , cvAbsDiff , cvAbsDiffS cvAdd , cvAddS , cvAddWeighted(可添加权重) #include <cv.h> #include ...
- OpenCV利用矩阵实现图像旋转
利用OpenCV的矩阵操作实现图像的逆时针旋转90度操作 代码 Mat src = imread("C:\\Users\\fenggl\\Desktop\\测试.jpg",MREA ...
随机推荐
- **后台怎么处理JSON数据中含有双引号?
http://bbs.csdn.net/topics/390578406?page=1 注意是后台,不是用js另外我这个json是直接取得别人的传过来的字符串,不是我自己拼写的,所以我自己不能做到转义 ...
- 减小VirtualBox虚拟硬盘文件的大小
虚拟机使用久了就会发现虚拟硬盘越来越大,但是进入虚拟机里的系统用命令看了下,实际占用的空间远没有虚拟硬盘大小那么大,这个让人很不爽,而且在分享虚拟机镜像的时候也很不方便.VirtualBox似乎没有提 ...
- JDBC连接池和DBUtils
本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...
- mysql 5.1 下载地址 百度云网盘下载
mysql 百度云下载 链接: https://pan.baidu.com/s/1fPSEcgtDN7aU2oQ_sL08Ww 提取码: 关注公众号[GitHubCN]回复2539获取
- php 根据ip获取城市以及网络运营商名称(利用qqwry.dat)
根据用户IP地址判定出所在城市以及网络运营商 qqwry.dat下载地址:http://files.cnblogs.com/guangxiaoluo/qqwry.rar 解压出来即可 //获取用户真 ...
- jquery跨域请求事例
//js发送跨域请求部分var requesturl = 'url'; $.ajax({ type:'GET', url:requesturl, data:{'qNum':num}, dataType ...
- require demo 记录备份
预览地址 http://127.0.0.1:8020/requireDemo/myNEW/index.html 注意 远程的 非模块的 empty: demo2
- 【LOJ】#2062. 「HAOI2016」地图
题解 我对莫队真是一无所知 这个东西显然可以用圆方树转成一个dfs序列 然后呢,用莫队计算每个询问区间的每个数出现的次数,从而顺带计算每个数字的奇偶性 但是我们要查的数字也用一个范围,可以直接用分块维 ...
- USACO 5.1 Fencing the Cows
Fencing the CowsHal Burch Farmer John wishes to build a fence to contain his cows, but he's a bit sh ...
- WordCount_命令行运行时指定参数
WordCountApp命令行运行时指定参数 1.修改之前的WordCountApp.java的代码 package cmd; import java.net.URI; import org.apac ...