矩阵和图像的操作

(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的更多相关文章

  1. 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS

    矩阵和图像的操作 (1)cvSetIdentity函数 其结构 void cvSetIdentity(//将矩阵行与列相等的元素置为1.其余元素置为0 CvArr* arr//目标矩阵 ); 实例代码 ...

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

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

  3. 《学习opencv》笔记——矩阵和图像操作——cvAbs,cvAbsDiff and cvAbsDiffS

    矩阵和图像的操作 (1)cvAbs,cvAbsdiff,cvAbsDiffS 它们的结构为: void cvAbs( //取src中元素的绝对值,写到dst中 const CvArr* src, co ...

  4. 《学习opencv》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis

    矩阵和图像的操作 (1)cvInRange函数 其结构 void cvInRange(//提取图像中在阈值中间的部分 const CvArr* src,//目标图像 const CvArr* lowe ...

  5. 《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor

    矩阵和图像的操作 (1)cvCrossProduct函数 其结构 void cvCrossProdust(//计算两个三维向量的叉积 const CvArr* src1, const CvArr* s ...

  6. 《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero

    矩阵和图像的操作 (1)cvConvertScale函数 其结构: void cvConvertScale( //进行线性变换,将src乘scale加上shift保存到dst const CvArr* ...

  7. opencv笔记2:图像ROI

    time:2015年 10月 03日 星期六 12:03:45 CST # opencv笔记2:图像ROI ROI ROI意思是Region Of Interests,感兴趣区域,是一个图中的一个子区 ...

  8. OpenCV —— 矩阵和图像操作

    cvAbs , cvAbsDiff , cvAbsDiffS cvAdd , cvAddS , cvAddWeighted(可添加权重) #include <cv.h> #include ...

  9. OpenCV利用矩阵实现图像旋转

    利用OpenCV的矩阵操作实现图像的逆时针旋转90度操作 代码 Mat src = imread("C:\\Users\\fenggl\\Desktop\\测试.jpg",MREA ...

随机推荐

  1. 206.反转单列表 Reverse Linked List

    Reverse a singly linked list. 使用栈 public class Solution { public ListNode ReverseList(ListNode head) ...

  2. Facebook登录 AndroidStudio

    简介 主页:https://www.facebook.com/ Android开发者支持:https://developers.facebook.com/docs/android/  应用管理:htt ...

  3. django: db - display

    本讲介绍数据在页面中的呈现,内容很简单,就是嵌套循环在模板中的使用. 一,修改 csvt03/urls.py: from django.conf.urls import patterns, inclu ...

  4. centos7上使用yum安装mysql

    centos yum是没有mysql的,集成的是新的Mariadb,怎么用yum的方式在centos7上安装mysql呢? 1. 下载mysql的repo源 wget http://repo.mysq ...

  5. javascript 实现jsonp

    jsonp原理其实也简单,虽然ajax不能跨域,但是通过src这个属性我们可以实现跨域,其实和我们引入第三方jquery调用它的方法一样的. html: <!DOCTYPE html> & ...

  6. mac os 10.10下安装android studio问题:android studio was unable to find a valid jvm

    友情提示:小编在做到这一步前,已经确定jdk和环境变量已经安装并配置无误,关于怎么检查java环境变量请自行百度. 原因分析:android studio安装包下的info.plist配置文件中有个关 ...

  7. [转]XML中必须进行转义的字符

    转自:http://jaenson.iteye.com/blog/945469 编写XML代码经常遗漏的常识: XML实体中不允许出现"&","<" ...

  8. sublime3 ctl+b无效

    Preference->Browse Packages->python,编辑Python.sublime-build文件,在字典里添加path item,value为你的python路径, ...

  9. linux内核学习之一:环境搭建--安装Debian7.3

    本系列文章假设读者已对linux有一定的了解,其实学习linux内核不需要有很深的关于linux的知识,只需要了解以下内容:linux基础知识及基本shell命令:现代操作系统的基本概念:C语言和gc ...

  10. MongoDB学习笔记--基本命令

    转自:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 数据库文件默认位置 /var/lib/mongodb 成功启动Mongo ...