- 综述:
- @H_403_12@分配矩阵空间:
CvMat* cvCreateMat(int rows,int cols,int type); type: 矩阵元素类型. 格式为CV_<bit_depth>(S|U|F)C<number_of_channels>. 例如: CV_8UC1 表示8位无符号单通道矩阵,CV_32SC2表示32位有符号双通道矩阵. 例程: CvMat* M = cvCreateMat(4,4,CV_32FC1);
- @H_403_12@释放矩阵空间:
@H_403_12@
- @H_403_12@复制矩阵:
@H_403_12@初始化矩阵:
另一种方法:
- @H_403_12@初始化矩阵为单位阵:
- @H_403_12@cvSetIdentity(M);
// 这里似乎有问题,不成功
- @H_403_12@cvSetIdentity(M);
存取矩阵元素
- 假设需要存取一个2维浮点矩阵的第(i,j)个元素.
- @H_403_12@间接存取矩阵元素:
@H_403_12@直接存取,假设使用4-字节校正:
- 矩阵-矩阵操作:
- @H_403_12@double
va[] = {1, 2, 3}; - @H_403_12@double
vb[] = {0, 0, 1}; - @H_403_12@double
vc[3]; - @H_403_12@CvMat
Va=cvMat(3, 1, va); - @H_403_12@CvMat
Vb=cvMat(3, vb); - @H_403_12@CvMat
Vc=cvMat(3, vc); - @H_403_12@double
res=cvDotProduct(&Va,&Vb); // 点乘: Va . Vb -> res - @H_403_12@cvCrossProduct(&Va,
&Vb, &Vc); // 向量积: Va x Vb -> Vc - @H_403_12@end{verbatim}
@H_403_12@注意 Va,Vb,Vc 在向量积中向量元素个数须相同.
- @H_403_12@double
- @H_403_12@单矩阵操作:
- @H_403_12@CvMat*
A = cvCreateMat(3,3,255)">CvMat* x = cvCreateMat(3,1,255)">CvMat* b = cvCreateMat(3,255)">cvSolve(&A, &b, &x); // solve (Ax=b) for x
- @H_403_12@CvMat*
E = cvCreateMat(3,255)">CvMat* l = cvCreateMat(3,255)">cvEigenVV(&A, &E, &l); // l = A的特征值 (降序排列) , E = 对应的特征向量 (每行)
- @H_403_12@CvMat*
U = cvCreateMat(3,255)">CvMat* D = cvCreateMat(3,255)">CvMat* V = cvCreateMat(3,255)">cvSVD(A, D, U, V, CV_SVD_U_T|CV_SVD_V_T); //A=UDV^T
- @H_403_12@CvMat*