《学习opencv》笔记——矩阵和图像操作——cvGertDims,cvGetDimSize,cvGetRow,cvGetRow,cvGetSize and cvGetSubRect
来源:互联网 发布:普通话考试准备软件 编辑:程序博客网 时间:2024/05/16 12:53
矩阵和图像的操作
(1)cvGetDims函数
其结构
int cvGetDims(//返回矩阵的维度和每维上的大小const CvArr* arr,//目标矩阵int * sizes = NULL//每个维上的大小,是个数组);
实例代码
#include <cv.h>#include <highgui.h>#include <stdio.h>#include <iostream>using namespace std;int main() { double a[5][5] = { {1,0,0,0,6},{0,2,0,7,0},{0,0,3,0,0},{0,9,0,4,0},{8,0,0,0,5}};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;}int sizes[100] = {0};int v = cvGetDims(&va,sizes);cout << "矩阵的维数:"; cout << v << endl;cout << "每个维度上的大小:"<<endl;for(int i = 0 ; i<100&&sizes[i]!=0;i++)cout << sizes[i] << endl;getchar();return 0;}
输出结果
(2)cvGetDimSize函数
其结构
int cvGetDimSize(//返回有index指定的维度的大小const CvArr* arr,//目标矩阵int index//维度索引);
实例代码
#include <cv.h>#include <highgui.h>#include <stdio.h>#include <iostream>using namespace std;int main() { double a[5][4] = { {1,0,0,0},{0,2,0,7},{0,0,3,0},{0,9,0,4},{8,0,0,0}};CvMat va=cvMat(5,4, CV_64FC1,a);cout<<"目标矩阵:"<<endl;for(int i=0;i<5;i++){for(int j=0;j<4;j++)printf("%f\t",cvmGet(&va,i,j));cout << endl;}int v = cvGetDimSize(&va,1);cout << "矩阵的指定维数上的大小为:"; cout << v << endl;getchar();return 0;}
输出结果
(3)cvGetRow函数
其结构
CvMat* cvGetRow(//取出矩阵中的一行const CvArr* arr,//目标矩阵CvMat* submat,//矩阵指针int row//所要取的行的索引数);
实例代码
#include <cv.h>#include <highgui.h>#include <stdio.h>#include <iostream>using namespace std;int main() { double a[5][5] = { {1,0,0,0,0},{0,2,0,0,0},{0,0,3,0,0},{0,0,0,4,0},{0,0,0,0,5}};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;}CvMat vb =cvMat(5,5, CV_64FC1);CvMat vc =cvMat(5,5, CV_64FC1); vc = *(cvGetRow(&va,&vb,3));cout << "所要取的行为:"<< endl;for(int i=0;i<vc.rows;i++){for(int j=0;j<vc.cols;j++)printf("%f\t",cvmGet(&vc,i,j));cout << endl;}getchar();return 0;}
输出结果
(4)cvGetRows函数
其结构
CvMat* cvGetRows(//取出矩阵中的一些行const CvArr* arr,//目标矩阵CvMat* submat,//矩阵指针int start_row,//开始行,包含int end_row//结束行,不包含);
实例代码
#include <cv.h>#include <highgui.h>#include <stdio.h>#include <iostream>using namespace std;int main() { double a[5][5] = { {1,0,0,0,0},{0,2,0,0,0},{0,0,3,0,0},{0,0,0,4,0},{0,0,0,0,5}};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;}CvMat vb =cvMat(5,5, CV_64FC1);CvMat vc =cvMat(5,5, CV_64FC1); vc = *(cvGetRows(&va,&vb,0,3));cout << "所要取的行为:"<< endl;for(int i=0;i<vc.rows;i++){for(int j=0;j<vc.cols;j++)printf("%f\t",cvmGet(&vc,i,j));cout << endl;}getchar();return 0;}
输出结果
(5)cvGetSize函数
其结构
CvSize cvGetSize(//获得图像尺寸const CvArr* arr);
实例代码
#include <cv.h>#include <highgui.h>#include <stdio.h>#include <iostream>using namespace std;int main() { IplImage *src1;src1=cvLoadImage("5.jpg");CvSize cs = cvGetSize(src1);cout << "图像的尺寸为:(单位:像素)"<<endl;cout <<"高:"<< cs.height << endl;cout <<"宽:"<<cs.width << endl;getchar();return 0;}
输出结果
(6)cvGetSubRect函数
其结构
CvSize cvGetSubRect(//返回选择区域的尺寸const CvArr* arr,//目标矩阵CvArr* submat,//矩阵指针CvRect rect//选择区域);
ps:1.《学习openCV》中该函数返回值为CvSize,不过我所用的2.49中返回值是CvMat,请注意。
2. 切勿在使用submat前初始化变量,不然会造成内存溢出。
#include <cv.h>#include <highgui.h>#include <stdio.h>#include <iostream>using namespace std;int main() { IplImage *res;int subX = 0;int subY = 0;CvMat matSrc;res = cvLoadImage("1.jpg", CV_LOAD_IMAGE_COLOR);subX = res->width / 2;subY = res->height / 2;CvMat *pMat = cvGetSubRect(res, &matSrc, cvRect(0, 0, res->width - subX, res->height - subY));IplImage *pSubImg = cvCreateImageHeader(cvSize(440, 660), 8, 1);cvGetImage(pMat, pSubImg); cvShowImage("所截图像",pSubImg);cvShowImage("原图像", res);cvWaitKey(0);return 0;}
输出结果
to be continued
45 0
- 《学习opencv》笔记——矩阵和图像操作——cvGertDims,cvGetDimSize,cvGetRow,cvGetRow,cvGetSize and cvGetSubRect
- opencv笔记:cvGetRow【指针操作】
- 《学习opencv》笔记——矩阵和图像操作——cvAbs,cvAbsDiff and cvAbsDiffS
- 《学习opencv》笔记——矩阵和图像操作——cvAdd、cvAddS and cvAddWeighted
- 《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv
- 《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS
- 《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero
- 《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor
- 《学习opencv》笔记——矩阵和图像操作——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
- 《学习opencv》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis
- OpenCV学习笔记(四)—矩阵和图像操作
- 《学习opencv》笔记——矩阵和图像操作——cvDet,cvDit,cvDotProduct,cvEigenVV and cvFlip
- 《学习opencv》笔记——矩阵和图像操作——cvMax,cvMaxS,cvMerge,cvMin and cvMinS
- 《学习opencv》笔记——矩阵和图像操作——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize
- 《学习opencv》笔记——矩阵和图像操作——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero
- 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS
- 《学习opencv》笔记——矩阵和图像操作——cvSum,cvSVD,cvSVBkSb,cvTrace,cvTranspose,cvXor,cvXorS and cvZero
- 《学习opencv》笔记——矩阵和图像操作——cvSum,cvSVD,cvSVBkSb,cvTrace,cvTranspose,cvXor,cvXorS and...
- repo upload 时报错
- 简单选择排序(C/C++实现)
- 杭电 Palindromes _easy version
- Android Loader
- 中国邮票
- 《学习opencv》笔记——矩阵和图像操作——cvGertDims,cvGetDimSize,cvGetRow,cvGetRow,cvGetSize and cvGetSubRect
- Swift简介 教程
- winpcap学习笔记--(Capturing the packets without the callback)
- 用OpenSceneGraph实现的NeHe OpenGL教程 - 第四十六课
- Linux下查看文件和文件夹大小
- 【iOS开发】iOS7 兼容及部分细节
- Vi/Vim查找替换使用方法
- layoutSubviews何时调用的问题
- Swift编程语言 瞬间复制出Flappy Bird火爆游戏