《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS
矩阵和图像的操作
(1)cvCalcCovarMatrix函数
其结构
void cvCalcCovarMatrix(计算给定点的均值和协方差矩阵
const CvArr** vects,//给定向量
int count,//给定向量的组数
CvArr* cov_mat,//结果矩阵
CvArr* avg,//依据flag得到结果
int flags//标记位
);
标记位參数值极其意义
|
标志參数的详细标志值 |
意义 |
|
CV_COVAR_NORMAL |
计算均值和协方差 |
|
CV_COVAR__SCRAMBLED |
高速PCA”Scrambled”协方差 |
|
CV_COVAR_USE_AVERAGE |
输入均值而不是计算均值 |
|
CV_COVAR_SCALE |
又一次缩放输出的协方差矩阵 |
实例程序
#include <cv.h>
#include <stdio.h>
#include <stdlib.h> float Coordinates[ 20 ]={ 1.5 , 2.3 , 3.0 , 1.7 , 1.2 , 2.9 , 2.1 , 2.2 , 3.1 , 3.1 , 1.3 , 2.7 , 2.0 , 1.7 , 1.0 , 2.0 , 0.5 , 0.6 , 1.0 , 0.9 }; int main()
{
CvMat *Vector[ 1 ];
CvMat *Vector1;
CvMat *CovarMatrix;
CvMat *avg; Vector1=cvCreateMat( 10 , 2 ,CV_32FC1);
cvSetData(Vector1,Coordinates,Vector1->step);
Vector[ 0 ]=Vector1;
CovarMatrix=cvCreateMat( 2 , 2 ,CV_32FC1);
avg=cvCreateMat( 1 , 2 ,CV_32FC1); cvCalcCovarMatrix(( const CvArr **)Vector, 10 ,CovarMatrix,avg,CV_COVAR_SCALE+CV_COVAR_NORMAL+CV_COVAR_ROWS); for ( int i= 0 ;i< 2 ;i++)
{
for ( int j= 0 ;j< 2 ;j++)
{
printf( "%f " ,cvGetReal2D(CovarMatrix,i,j));
}
printf( "\n" );
}
for ( int i= 0 ;i< 1 ;i++)
{
for ( int j= 0 ;j< 2 ;j++)
{
printf( "%f " ,cvGetReal2D(avg,i,j));
}
printf( "\n" );
}
getchar();
return 0;
}
输出结果
(2)cvCmp函数
其结构
void cvCmp(//比較两幅对应的图像的像素点
const CvArr* src1,//图像一
const CvArr* src2,//图像二
CvArr* dst,//结果矩阵
int cmp_op//标记參数
);
cmp_op值及其意义
|
cmp_op的值 |
比較方法 |
|
CV_CMP_EQ |
(src1i == src2i) |
|
CV_CMP_GT |
(src1i > src2i) |
|
CV_CMP_GE |
(src1i >= src2i) |
|
CV_CMP_LT |
(src1i < src2i) |
|
CV_CMP_LE |
(src1i <= src2i) |
|
CV_CMP_NE |
(src1i != src2i) |
实例程序
#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main(int argc, char** argv)
{
IplImage *src1, *src2,*src3;
src1=cvLoadImage("5.jpg");
src2=cvLoadImage("6.jpg");
src3=cvLoadImage("5.jpg"); cvCmp(src1,src2,src3,CV_CMP_GE);
cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvShowImage( "測试3", src3);
cvWaitKey();
return 0;
}
输出结果
(3)cvCmpS函数
其结构
void cvCmpS(//比較图像的像素点与value
const CvArr* src1,//图像
double value,//给定值
CvArr* dst,//结果矩阵
int cmp_op//标记參数
);
当中cmp_op參数的值与上个函数同样
实例程序
#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main(int argc, char** argv)
{
IplImage *src1,*src2;
src1=cvLoadImage("5.jpg");
src2=cvLoadImage("5.jpg"); cvCmpS(src1,250.2,src2,CV_CMP_GE);
cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvWaitKey();
return 0;
}
输出结果
to be continued
《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS的更多相关文章
- 《学习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》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis
矩阵和图像的操作 (1)cvInRange函数 其结构 void cvInRange(//提取图像中在阈值中间的部分 const CvArr* src,//目标图像 const CvArr* lowe ...
- 《学习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 ...
随机推荐
- 206.反转单列表 Reverse Linked List
Reverse a singly linked list. 使用栈 public class Solution { public ListNode ReverseList(ListNode head) ...
- Facebook登录 AndroidStudio
简介 主页:https://www.facebook.com/ Android开发者支持:https://developers.facebook.com/docs/android/ 应用管理:htt ...
- django: db - display
本讲介绍数据在页面中的呈现,内容很简单,就是嵌套循环在模板中的使用. 一,修改 csvt03/urls.py: from django.conf.urls import patterns, inclu ...
- centos7上使用yum安装mysql
centos yum是没有mysql的,集成的是新的Mariadb,怎么用yum的方式在centos7上安装mysql呢? 1. 下载mysql的repo源 wget http://repo.mysq ...
- javascript 实现jsonp
jsonp原理其实也简单,虽然ajax不能跨域,但是通过src这个属性我们可以实现跨域,其实和我们引入第三方jquery调用它的方法一样的. html: <!DOCTYPE html> & ...
- mac os 10.10下安装android studio问题:android studio was unable to find a valid jvm
友情提示:小编在做到这一步前,已经确定jdk和环境变量已经安装并配置无误,关于怎么检查java环境变量请自行百度. 原因分析:android studio安装包下的info.plist配置文件中有个关 ...
- [转]XML中必须进行转义的字符
转自:http://jaenson.iteye.com/blog/945469 编写XML代码经常遗漏的常识: XML实体中不允许出现"&","<" ...
- sublime3 ctl+b无效
Preference->Browse Packages->python,编辑Python.sublime-build文件,在字典里添加path item,value为你的python路径, ...
- linux内核学习之一:环境搭建--安装Debian7.3
本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...
- MongoDB学习笔记--基本命令
转自:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 数据库文件默认位置 /var/lib/mongodb 成功启动Mongo ...