zoukankan      html  css  js  c++  java
  • 《学习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






  • 相关阅读:
    spring cloud 网关
    spring cloud 熔断器
    spring cloud 健康检查
    spring cloud 分布式链路跟踪(集成zipkin)
    spring cloud 分布式链路追踪
    spring cloud eureka 微服务之间的调用
    spring cloud eureka注册中心
    ACCP8.0Y2Web前端框架与移动应用开发第5章Bootstrap制作微票儿首页
    ACCP8.0Y2Web前端框架与移动应用开发第4章Bootstrap的JavaScript插件
    ACCP8.0Y2Web前端框架与移动应用开发第3章Bootstrap组件
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3810649.html
Copyright © 2011-2022 走看看