以下是我的部分代码 因为前面的编译运行都可以 加了这部分就不行了
CvMat* M_1A=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1A,1,1,Array.GetAt(0).x);
cvmSet(M_1A,2,1,Array.GetAt(0).y);
cvmSet(M_1A,3,1,1); /* CvMat* M_1B=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1B,1,1,Array.GetAt(1).x);
cvmSet(M_1B,2,1,Array.GetAt(1).y);
cvmSet(M_1B,3,1,1);
CvMat* M_1C=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1C,1,1,Array.GetAt(2).x);
cvmSet(M_1C,2,1,Array.GetAt(2).y);
cvmSet(M_1C,3,1,1); CvMat* M_1D=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1D,1,1,Array.GetAt(3).x);
cvmSet(M_1D,2,1,Array.GetAt(3).y);
cvmSet(M_1D,3,1,1); CvMat* M_2A=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2A,1,1,Array.GetAt(4).x);
cvmSet(M_2A,2,1,Array.GetAt(4).y);
cvmSet(M_2A,3,1,1); CvMat* M_2B=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2B,1,1,Array.GetAt(5).x);
cvmSet(M_2B,2,1,Array.GetAt(5).y);
cvmSet(M_2B,3,1,1); CvMat* M_2C=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2C,1,1,Array.GetAt(6).x);
cvmSet(M_2C,2,1,Array.GetAt(6).y);
cvmSet(M_2C,3,1,1); CvMat* M_2D=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2D,1,1,Array.GetAt(7).x);
cvmSet(M_2D,2,1,Array.GetAt(7).y);
cvmSet(M_2D,3,1,1); CvMat* M_3A=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3A,1,1,Array.GetAt(8).x);
cvmSet(M_3A,2,1,Array.GetAt(8).y);
cvmSet(M_3A,3,1,1); CvMat* M_3B=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3B,1,1,Array.GetAt(9).x);
cvmSet(M_3B,2,1,Array.GetAt(9).y);
cvmSet(M_3B,3,1,1); CvMat* M_3C=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3C,1,1,Array.GetAt(10).x);
cvmSet(M_3C,2,1,Array.GetAt(10).y);
cvmSet(M_3C,3,1,1); CvMat* M_3D=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3D,1,1,Array.GetAt(11).x);
cvmSet(M_3D,2,1,Array.GetAt(11).y);
cvmSet(M_3D,3,1,1);*/ /* //D=[M_1D,M_2D,M_3D]
CvMat* D=cvCreateMat(3,3,CV_32FC1);
cvmSet(D,1,1,Array.GetAt(3).x);
cvmSet(D,2,1,Array.GetAt(3).y);
cvmSet(D,3,1,1);
cvmSet(D,1,2,Array.GetAt(7).x);
cvmSet(D,2,2,Array.GetAt(7).y);
cvmSet(D,3,2,1);
cvmSet(D,1,3,Array.GetAt(11).x);
cvmSet(D,2,3,Array.GetAt(11).y);
cvmSet(D,3,3,1);
*/ /////////////////////定义三幅图的伽马(GARM)值////////////////////////* //////////////////// GAMMA_1=inv([M_1A M_1B M_1C])*M_1D; ////////////////// CvMat* GARM_P1=cvCreateMat(3,3,CV_32FC1); //GARM_P1=[M_1A M_1B M_1C]
cvmSet(GARM_P1,1,1,Array.GetAt(0).x);
cvmSet(GARM_P1,2,1,Array.GetAt(0).y);
cvmSet(GARM_P1,3,1,1);
cvmSet(GARM_P1,1,2,Array.GetAt(1).x);
cvmSet(GARM_P1,2,2,Array.GetAt(1).y);
cvmSet(GARM_P1,3,2,1);
cvmSet(GARM_P1,1,3,Array.GetAt(2).x);
cvmSet(GARM_P1,2,3,Array.GetAt(2).y);
cvmSet(GARM_P1,3,3,1);
CvMat* GARM_T1=cvCreateMat(3,3,CV_32FC1); //GARM_T1=inv(GARM_P1)=inv([M_1A M_1B M_1C])
cvInvert(GARM_P1,GARM_T1,CV_LU);
CvMat* GARM_1=cvCreateMat(3,3,CV_32FC1);
cvMatMul(GARM_T1,M_1D,GARM_1);
///////////////garm_ij i=1、2、3 j=1、2、3、4为各GARM_1 GARM_2 GARM_3的元素
float garm_11=cvmGet(GARM_1,1,1);
float garm_12=cvmGet(GARM_1,2,1);
float garm_13=cvmGet(GARM_1,3,1);
float garm_14=1.0;
CvMat* GARM_P2=cvCreateMat(3,3,CV_32FC1);
cvmSet(GARM_P2,1,1,Array.GetAt(4).x);
cvmSet(GARM_P2,2,1,Array.GetAt(4).y);
cvmSet(GARM_P2,3,1,1);
cvmSet(GARM_P2,1,2,Array.GetAt(5).x);
cvmSet(GARM_P2,2,2,Array.GetAt(5).y);
cvmSet(GARM_P2,3,2,1);
cvmSet(GARM_P2,1,3,Array.GetAt(6).x);
cvmSet(GARM_P2,2,3,Array.GetAt(6).y);
cvmSet(GARM_P2,3,3,1);
CvMat* GARM_T2=cvCreateMat(3,3,CV_32FC1);
cvInvert(GARM_P2,GARM_T2,CV_LU);
CvMat* GARM_2=cvCreateMat(3,3,CV_32FC1);
cvMatMul(GARM_T2,M_1D,GARM_2);
float garm_21=cvmGet(GARM_2,1,1);
float garm_22=cvmGet(GARM_2,2,1);
float garm_23=cvmGet(GARM_2,3,1);
float garm_24=1.0; CvMat* GARM_P3=cvCreateMat(3,3,CV_32FC1);
cvmSet(GARM_P3,1,1,Array.GetAt(8).x);
cvmSet(GARM_P3,2,1,Array.GetAt(8).y);
cvmSet(GARM_P3,3,1,1);
cvmSet(GARM_P3,1,2,Array.GetAt(9).x);
cvmSet(GARM_P3,2,2,Array.GetAt(9).y);
cvmSet(GARM_P3,3,2,1);
cvmSet(GARM_P3,1,3,Array.GetAt(10).x);
cvmSet(GARM_P3,2,3,Array.GetAt(10).y);
cvmSet(GARM_P3,3,3,1);
CvMat* GARM_T3=cvCreateMat(3,3,CV_32FC1);
cvInvert(GARM_P3,GARM_T3,CV_LU);
CvMat* GARM_3=cvCreateMat(3,3,CV_32FC1);
cvMatMul(GARM_T3,M_1D,GARM_3);
float garm_31=cvmGet(GARM_3,1,1);
float garm_32=cvmGet(GARM_3,2,1);
float garm_33=cvmGet(GARM_3,3,1);
float garm_34=1.0;我是从一个数组中取值赋给 定义的矩阵
因为第一次用OPENCV
所以不知道出什么问题了运行到这个地方就报错 assertion failed然后就只能 “终止”了请大家帮忙!谢谢
CvMat* M_1A=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1A,1,1,Array.GetAt(0).x);
cvmSet(M_1A,2,1,Array.GetAt(0).y);
cvmSet(M_1A,3,1,1); /* CvMat* M_1B=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1B,1,1,Array.GetAt(1).x);
cvmSet(M_1B,2,1,Array.GetAt(1).y);
cvmSet(M_1B,3,1,1);
CvMat* M_1C=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1C,1,1,Array.GetAt(2).x);
cvmSet(M_1C,2,1,Array.GetAt(2).y);
cvmSet(M_1C,3,1,1); CvMat* M_1D=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_1D,1,1,Array.GetAt(3).x);
cvmSet(M_1D,2,1,Array.GetAt(3).y);
cvmSet(M_1D,3,1,1); CvMat* M_2A=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2A,1,1,Array.GetAt(4).x);
cvmSet(M_2A,2,1,Array.GetAt(4).y);
cvmSet(M_2A,3,1,1); CvMat* M_2B=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2B,1,1,Array.GetAt(5).x);
cvmSet(M_2B,2,1,Array.GetAt(5).y);
cvmSet(M_2B,3,1,1); CvMat* M_2C=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2C,1,1,Array.GetAt(6).x);
cvmSet(M_2C,2,1,Array.GetAt(6).y);
cvmSet(M_2C,3,1,1); CvMat* M_2D=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_2D,1,1,Array.GetAt(7).x);
cvmSet(M_2D,2,1,Array.GetAt(7).y);
cvmSet(M_2D,3,1,1); CvMat* M_3A=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3A,1,1,Array.GetAt(8).x);
cvmSet(M_3A,2,1,Array.GetAt(8).y);
cvmSet(M_3A,3,1,1); CvMat* M_3B=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3B,1,1,Array.GetAt(9).x);
cvmSet(M_3B,2,1,Array.GetAt(9).y);
cvmSet(M_3B,3,1,1); CvMat* M_3C=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3C,1,1,Array.GetAt(10).x);
cvmSet(M_3C,2,1,Array.GetAt(10).y);
cvmSet(M_3C,3,1,1); CvMat* M_3D=cvCreateMat(3,1,CV_32FC1);
cvmSet(M_3D,1,1,Array.GetAt(11).x);
cvmSet(M_3D,2,1,Array.GetAt(11).y);
cvmSet(M_3D,3,1,1);*/ /* //D=[M_1D,M_2D,M_3D]
CvMat* D=cvCreateMat(3,3,CV_32FC1);
cvmSet(D,1,1,Array.GetAt(3).x);
cvmSet(D,2,1,Array.GetAt(3).y);
cvmSet(D,3,1,1);
cvmSet(D,1,2,Array.GetAt(7).x);
cvmSet(D,2,2,Array.GetAt(7).y);
cvmSet(D,3,2,1);
cvmSet(D,1,3,Array.GetAt(11).x);
cvmSet(D,2,3,Array.GetAt(11).y);
cvmSet(D,3,3,1);
*/ /////////////////////定义三幅图的伽马(GARM)值////////////////////////* //////////////////// GAMMA_1=inv([M_1A M_1B M_1C])*M_1D; ////////////////// CvMat* GARM_P1=cvCreateMat(3,3,CV_32FC1); //GARM_P1=[M_1A M_1B M_1C]
cvmSet(GARM_P1,1,1,Array.GetAt(0).x);
cvmSet(GARM_P1,2,1,Array.GetAt(0).y);
cvmSet(GARM_P1,3,1,1);
cvmSet(GARM_P1,1,2,Array.GetAt(1).x);
cvmSet(GARM_P1,2,2,Array.GetAt(1).y);
cvmSet(GARM_P1,3,2,1);
cvmSet(GARM_P1,1,3,Array.GetAt(2).x);
cvmSet(GARM_P1,2,3,Array.GetAt(2).y);
cvmSet(GARM_P1,3,3,1);
CvMat* GARM_T1=cvCreateMat(3,3,CV_32FC1); //GARM_T1=inv(GARM_P1)=inv([M_1A M_1B M_1C])
cvInvert(GARM_P1,GARM_T1,CV_LU);
CvMat* GARM_1=cvCreateMat(3,3,CV_32FC1);
cvMatMul(GARM_T1,M_1D,GARM_1);
///////////////garm_ij i=1、2、3 j=1、2、3、4为各GARM_1 GARM_2 GARM_3的元素
float garm_11=cvmGet(GARM_1,1,1);
float garm_12=cvmGet(GARM_1,2,1);
float garm_13=cvmGet(GARM_1,3,1);
float garm_14=1.0;
CvMat* GARM_P2=cvCreateMat(3,3,CV_32FC1);
cvmSet(GARM_P2,1,1,Array.GetAt(4).x);
cvmSet(GARM_P2,2,1,Array.GetAt(4).y);
cvmSet(GARM_P2,3,1,1);
cvmSet(GARM_P2,1,2,Array.GetAt(5).x);
cvmSet(GARM_P2,2,2,Array.GetAt(5).y);
cvmSet(GARM_P2,3,2,1);
cvmSet(GARM_P2,1,3,Array.GetAt(6).x);
cvmSet(GARM_P2,2,3,Array.GetAt(6).y);
cvmSet(GARM_P2,3,3,1);
CvMat* GARM_T2=cvCreateMat(3,3,CV_32FC1);
cvInvert(GARM_P2,GARM_T2,CV_LU);
CvMat* GARM_2=cvCreateMat(3,3,CV_32FC1);
cvMatMul(GARM_T2,M_1D,GARM_2);
float garm_21=cvmGet(GARM_2,1,1);
float garm_22=cvmGet(GARM_2,2,1);
float garm_23=cvmGet(GARM_2,3,1);
float garm_24=1.0; CvMat* GARM_P3=cvCreateMat(3,3,CV_32FC1);
cvmSet(GARM_P3,1,1,Array.GetAt(8).x);
cvmSet(GARM_P3,2,1,Array.GetAt(8).y);
cvmSet(GARM_P3,3,1,1);
cvmSet(GARM_P3,1,2,Array.GetAt(9).x);
cvmSet(GARM_P3,2,2,Array.GetAt(9).y);
cvmSet(GARM_P3,3,2,1);
cvmSet(GARM_P3,1,3,Array.GetAt(10).x);
cvmSet(GARM_P3,2,3,Array.GetAt(10).y);
cvmSet(GARM_P3,3,3,1);
CvMat* GARM_T3=cvCreateMat(3,3,CV_32FC1);
cvInvert(GARM_P3,GARM_T3,CV_LU);
CvMat* GARM_3=cvCreateMat(3,3,CV_32FC1);
cvMatMul(GARM_T3,M_1D,GARM_3);
float garm_31=cvmGet(GARM_3,1,1);
float garm_32=cvmGet(GARM_3,2,1);
float garm_33=cvmGet(GARM_3,3,1);
float garm_34=1.0;我是从一个数组中取值赋给 定义的矩阵
因为第一次用OPENCV
所以不知道出什么问题了运行到这个地方就报错 assertion failed然后就只能 “终止”了请大家帮忙!谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货