//计算三维坐标
void point_reconstruct(double M1[3][4],double M2[3][4],double p1[2],double p2[2],double p[3])
{
double src1_data[4][3];
src1_data[0][0]=p1[0]*M1[2][0]-M1[0][0];
src1_data[0][1]=p1[0]*M1[2][1]-M1[0][1];
src1_data[0][2]=p1[0]*M1[2][2]-M1[0][2];
src1_data[1][0]=p1[1]*M1[2][0]-M1[1][0];
src1_data[1][1]=p1[1]*M1[2][1]-M1[1][1];
src1_data[1][2]=p1[1]*M1[2][2]-M1[1][2];
src1_data[2][0]=p2[0]*M2[2][0]-M2[0][0];
src1_data[2][1]=p2[0]*M2[2][1]-M2[0][1];
src1_data[2][2]=p2[0]*M2[2][2]-M2[0][2];
src1_data[3][0]=p2[1]*M2[2][0]-M2[1][0];
src1_data[3][1]=p2[1]*M2[2][1]-M2[1][1];
src1_data[3][2]=p2[1]*M2[2][2]-M2[1][2];
CvMat src1 = cvMat(4,3,CV_64FC1,src1_data);
double src2_data[4];
src2_data[0]=M1[0][3]-p1[0]*M1[2][3];
src2_data[1]=M1[1][3]-p1[1]*M1[2][3];
src2_data[2]=M2[0][3]-p2[0]*M2[2][3];
src2_data[3]=M2[1][3]-p2[1]*M2[2][3];
CvMat src2 = cvMat(4,1,CV_64FC1,src2_data);
CvMat answer = cvMat(3,1,CV_64FC1,p);
cvSolve(&src1,&src2,&answer,CV_SVD);
}