• 《学习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( "
    " ); 
    	} 
    	for ( int i= 0 ;i< 1 ;i++) 
    	{ 
    		for ( int j= 0 ;j< 2 ;j++) 
    		{ 
    			printf( "%f " ,cvGetReal2D(avg,i,j)); 
    		} 
    		printf( "
    " ); 
    	} 
    	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






  • 相关阅读:
    ATM+购物车项目
    python基础语法13 内置模块 subprocess, 正则表达式re模块, logging日志记录模块, 防止导入模块时自动执行测试功能, 包的理论
    kvm ip查看
    tar 排除某个目录
    MySQL5.7 添加用户、删除用户与授权
    tomcat 自带jdk
    django examples 学习笔记(1)创建一个独立的python环境
    cdh 安装组件 异常总结
    pycharm ubuntu安装
    (cdh)hive 基础知识 名词详解及架构
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3810649.html
Copyright © 2020-2023  润新知