《学习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的值 | 比較方法 | 
| 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
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号