码迷,mamicode.com
首页 > 其他好文 > 详细

《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS

时间:2014-06-20 13:15:40      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:opencv   vs   学习   图像处理   像素   


矩阵和图像的操作


(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;
}

输出结果


bubuko.com,布布扣


(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;
}

输出结果


bubuko.com,布布扣


(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;
}

输出结果


bubuko.com,布布扣


to be continued






《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS,布布扣,bubuko.com

《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS

标签:opencv   vs   学习   图像处理   像素   

原文地址:http://blog.csdn.net/zhurui_idea/article/details/28388911

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!