標籤:style class blog code http get
矩陣和映像的操作
(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(//比較映像的像素點與valueconst 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