#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#pragma comment(lib,"highgui210d.lib")
#pragma comment(lib,"cxcore210d.lib")
#pragma comment(lib,"cv210d.lib")void PrintfMat(CvMat* A)
{  int i, j;
   for (i=0;i<A->rows;i++)
   {  printf("\n");
      switch (CV_MAT_DEPTH(A->type))
  {  case CV_32F:
     case CV_64F:
 for(j=0;j<A->cols;j++)
 printf("9.3f",(float)cvGetReal2D(A,i,j));
 break;
 case CV_8U:
 case CV_16U:
 for(j=0;j<A->cols;j++)
 printf("%6d",(int)cvGetReal2D(A,i,j));
 break;
 default;
 break;
                 }
   }
   printf("\n");
}int _tmain(int argc, _TCHAR* argv[])
{   double a={ 1,2,0,
               2,5,-1,
   4,10,-1 };
    double b[9],c[9];
CvMat Ma,Mb,Mc;
cvInitMatHeader(&Ma,3,3,CV_64FC1,a,CV_AUTOSTEP);
cvInitMatHeader(&Mb,3,3,CV_64FC1,b,CV_AUTOSTEP);
cvInitMatHeader(&Mc,3,3,CV_64FC1,c,CV_AUTOSTEP);

printf("A=");PrintfMat(&Ma);
cvTranspose(&Ma,&Mb);
printf("A'=");PrintfMat(&Mb);
cvMatMul(&Ma,&Mb,&Mc);
printf("A*A'=");PrintfMat(&Mc);
cvMul(&Ma,&Mb,&Mc,1);
printf("A.*A=");PrintfMat(&Mc);
cvInvert(&Ma,&Mb,CV_LU);
printf("inv(A)=");PrintfMat(&Mb);
cvMatMul(&Ma,&Mb,&Mc);
printf("A*inv(A)=");PrintfMat(&Mc);
    cvSVD(&Ma,&Mc,NULL,NULL,0);
printf("svd(A)=");PrintfMat(&Mc);
cvAddS(&Ma,cvRealScalar(2),&Mc,NULL);
printf("A+2=");PrintfMat(&Mc);
return 0;
}
不知道为什么,总是报出“error C2440: “类型转换”: 无法从“double”转换为“void *””。。