CvMat的用法详解.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CvMat的用法详解.pdf

OpenCV 学习之 CvMat 的用法详解及实例 目 录 1.初始化矩阵: 2 2.IplImage 到 cvMat 的转换 2 3.cvArr(IplImage 或者 cvMat)转化为 cvMat 2 4.图像直接操作 3 5.cvMat 的直接操作 3 6.间接访问 cvMat 5 7.修改矩阵的形状——cvReshape 的操作 6 8.计算色彩距离 8 CvMat 是 OpenCV 比较基础的函数。初学者应该掌握并熟练应用。但是我认 为计算机专业学习的方法是,不断的总结并且提炼,同时还要做大量的实践,如 编码,才能记忆深刻,体会深刻,从而引导自己想更高层次迈进。 1.初始化矩阵: 方式一、逐点赋值式: CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 ); cvZero( mat ); cvmSet( mat, 0, 0, 1 ); cvmSet( mat, 0, 1, 2 ); cvmSet( mat, 1, 0, 3 ); cvmSet( mat, 2, 2, 4 ); cvReleaseMat( mat ); 方式二、连接现有数组式: double a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; CvMat mat = cvMat( 3, 4, CV_64FC1, a ); // 64FC1 for double // 不需要 cvReleaseMat,因为数据内存分配是由 double 定义的数组进行的。 2.IplImage 到 cvMat 的转换 方式一、cvGetMat 方式: CvMat mathdr, *mat = cvGetMat( img, mathdr ); 方式二、cvConvert 方式: CvMat *mat = cvCreateMat( img-height, img-width, CV_64FC3 ); cvConvert( img, mat ); // #define cvConvert( src, dst ) cvConvertScale( (src), (dst), 1, 0 ) 3.cvArr(IplImage 或者 cvMat)转化为 cvMat 方式一、cvGetMat 方式: int coi = 0; cvMat *mat = (CvMat*)arr; if( !CV_IS_MAT(mat) ) { mat = cvGetMat( mat, matstub, coi ); if (coi != 0) reutn; // CV_ERROR_FROM_CODE(CV_BadCOI); } 写成函数为: // This is just an example of function // to support both IplImage and cvMat as an input CVAPI( void ) cvIamArr( const CvArr* arr ) { CV_FUNCNAME ( cvIamArr ); __BEGIN__; CV_ASSERT( mat NULL ); CvMat matstub, *mat = (CvMat*)arr; int coi = 0; if( !CV_IS_MAT(mat) ) { CV_CALL( mat = cvGetMat( mat, matstub, coi ) ); if (coi != 0) CV_ERROR_FROM_CODE(CV_BadCOI); } // Process as cvMat __END__; } 4. 图像直接操作 方式一

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档