《学习opencv》笔记——矩阵和图像操作——cvSum,cvSVD,cvSVBkSb,cvTrace,cvTranspose,cvXor,cvXorS and cvZero
2014-06-07 11:37
555 查看
矩阵和图像的操作
(1)cvSum函数
其结构
实例代码
输出结果
(2)cvSVD函数
其结构
ps : flag参数的取值
实例代码
输出结果
(3)cvSVBkSb函数
其结构
实例代码
输出结果
(4)cvTrace函数
其结构
实例代码
输出结果
(5)cvTranspose函数
其结构
实例代码
输出结果
(6)cvXor函数
其结构
实例代码
输出结果
(7)cvXorS函数
其结构
实例代码
输出结果
(8)cvZero函数
其结构
实例代码
输出结果
to be continued
(1)cvSum函数
其结构
CvScalar cvSum(//计算arr各通道所有像素总和 CvArr* arr//目标矩阵 );
实例代码
#include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { IplImage *src1,*dst1,*dst2,*dst3,*dst4; src1=cvLoadImage("3.jpg",1); CvScalar cs = cvSum(src1); cout << "通道一总和:"; cout << cs.val[0] << endl; cout << "通道二总和:"; cout << cs.val[1] << endl; cout << "通道三总和:"; cout << cs.val[2] << endl; cout << "通道四总和:"; cout << cs.val[3] << endl; getchar(); return 0; }
输出结果
(2)cvSVD函数
其结构
void cvSVD(//计算 A = U*W*(V的转置) CvArr* A, CvArr* W, CvArr* U = NULL, CvArr* V = NULL, int flags = 0//标记位 );
ps : flag参数的取值
参数 | 结果 |
CV_SVD_MODIFY_A | 允许改变矩阵A |
CV_SVD_U_T | 返回U转置而不是U |
CV_SVD_V_T | 返回V转置而不是V |
#include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { double a[5][5] = { {7,2,4,5,6}, {3,4,5,8,2}, {1,0,9,7,5}, {0,5,3,2,1}, {4,6,7,3,1} }; CvMat va = cvMat(5,5, CV_64FC1,a); cout<<"目标矩阵:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&va,i,j)); cout << endl; } double b[5][5] = {0}; CvMat vb = cvMat(5,5, CV_64FC1,b); double c[5][5] = {0}; CvMat vc = cvMat(5,5, CV_64FC1,c); double d[5][5] = {0}; CvMat vd = cvMat(5,5, CV_64FC1,d); cvSVD(&va,&vb,&vc,&vd); cout<<"结果矩阵vb:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&vb,i,j)); cout << endl; } cout<<"结果矩阵vc:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&vc,i,j)); cout << endl; } cout<<"结果矩阵vd:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&vd,i,j)); cout << endl; } getchar(); return 0; }
输出结果
(3)cvSVBkSb函数
其结构
void cvSVBKSb(//计算X=V*(W伴随)*(T转置)*B const CvArr* W, const CvArr* U, const CvArr* V, const CvArr* B, CvArr* X, int flage = 0//标记位 );
实例代码
#include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { double a[5][5] = { {7,2,4,5,6}, {3,4,5,8,2}, {1,0,9,7,5}, {0,5,3,2,1}, {4,6,7,3,1} }; CvMat va = cvMat(5,5, CV_64FC1,a); double b[5][5] = {0}; CvMat vb = cvMat(5,5, CV_64FC1,b); double c[5][5] = {0}; CvMat vc = cvMat(5,5, CV_64FC1,c); double d[5][5] = {0}; CvMat vd = cvMat(5,5, CV_64FC1,d); cvSVD(&va,&vb,&vc,&vd); cvSVBkSb(&vb,&vc,&vd,NULL,&va,0); cout<<"结果矩阵:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&va,i,j)); cout << endl; } getchar(); return 0; }
输出结果
(4)cvTrace函数
其结构
CvScalar cvTrace(//求矩阵的迹 const CvArr* mat//目标矩阵 );
实例代码
#include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { double a[5][5] = { {7,2,4,5,6}, {3,4,5,8,2}, {1,0,9,7,5}, {0,5,3,2,1}, {4,6,7,3,1} }; CvMat va = cvMat(5,5, CV_64FC1,a); cout<<"目标矩阵:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&va,i,j)); cout << endl; } CvScalar cs = cvTrace(&va); cout << " 矩阵的迹为:"; cout << cs.val[0] << endl; getchar(); return 0; }
输出结果
(5)cvTranspose函数
其结构
void cvTranspose(//矩阵转置 const CvArr* src,//目标矩阵 CvArr* dst//结果矩阵 );
实例代码
#include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { double a[5][5] = { {7,2,4,5,6}, {3,4,5,8,2}, {1,0,9,7,5}, {0,5,3,2,1}, {4,6,7,3,1} }; CvMat va = cvMat(5,5, CV_64FC1,a); double b[5][5] = {0}; CvMat vb = cvMat(5,5, CV_64FC1,b); cout<<"目标矩阵:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&va,i,j)); cout << endl; } cvTranspose(&va,&vb); cout<<"结果矩阵:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) printf("%f\t",cvmGet(&vb,i,j)); cout << endl; } getchar(); return 0; }
输出结果
(6)cvXor函数
其结构
void cvXor(//矩阵进行异或操作 const CvArr* src1,//矩阵1 const CvArr* src2,//矩阵2 CvArr* dst,//结果矩阵 const CvArr* mask = NULL//矩阵“开关” );
实例代码
#include <cv.h> #include <highgui.h> #include <stdio.h> int main(int argc, char** argv) { IplImage *src1, *src2,*src3; src1 = cvLoadImage("1.jpg"); src2 = cvLoadImage("11.jpg"); src3 = cvLoadImage("7.jpg"); cvXor(src1,src2,src3); cvShowImage( "测试1", src1); cvShowImage( "测试2", src2); cvShowImage( "测试3", src3); cvWaitKey(); return 0; }
输出结果
(7)cvXorS函数
其结构
void cvXor(//矩阵与给定值进行异或操作 const CvArr* src1,//矩阵1 CvScalar value//给定值 CvArr* dst,//结果矩阵 const CvArr* mask = NULL//矩阵“开关” );
实例代码
#include <cv.h> #include <highgui.h> #include <stdio.h> int main(int argc, char** argv) { IplImage *src1, *src2; src1 = cvLoadImage("1.jpg"); src2 = cvLoadImage("7.jpg"); CvScalar cs; cs.val[0] = 100; cs.val[1] = 100; cs.val[2] = 255; cs.val[3] = 0; cvXorS(src1,cs,src2); cvShowImage( "测试1", src1); cvShowImage( "测试2", src2); cvWaitKey(); return 0; }
输出结果
(8)cvZero函数
其结构
void cvZero(//将图像所有通道设置为零 CvArr* arr//目标图像 );
实例代码
#include <cv.h> #include <highgui.h> #include <stdio.h> int main(int argc, char** argv) { IplImage *src1, *src2; src1 = cvLoadImage("1.jpg"); src2 = cvLoadImage("1.jpg"); cvZero(src1); cvShowImage( "结果图", src1); cvShowImage( "原图", src2); cvWaitKey(); return 0; }
输出结果
to be continued
相关文章推荐
- 《学习opencv》笔记——矩阵和图像操作——cvSum,cvSVD,cvSVBkSb,cvTrace,cvTranspose,cvXor,cvXorS and...
- 《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor
- 《学习opencv》笔记——矩阵和图像操作——cvAdd、cvAddS and cvAddWeighted
- 《学习opencv》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis
- 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS
- 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS
- 《学习opencv》笔记——矩阵和图像操作——cvGertDims,cvGetDimSize,cvGetRow,cvGetRow,cvGetSize and cvGetSubRect
- 《学习opencv》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis
- 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS
- 《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor
- 《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero
- 《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS
- [转]《学习opencv》笔记——矩阵和图像操作——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero
- 《学习opencv》笔记——矩阵和图像操作——cvDet,cvDit,cvDotProduct,cvEigenVV and cvFlip
- 《学习opencv》笔记——矩阵和图像操作——cvAbs,cvAbsDiff and cvAbsDiffS
- 《学习opencv》笔记——矩阵和图像操作——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
- 《学习opencv》笔记——矩阵和图像操作——cvAbs,cvAbsDiff and cvAbsDiffS
- 《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv
- 《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS
- 《学习opencv》笔记——矩阵和图像操作——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero