当前位置:   article > 正文

OpenCV中CvMat的初始化[转]

cvmat 初始化

一)cvCreateMat创建和分配数据
CvCreateMat会创建CvMat,并为CvMat分配数据。cvCreateMat可以配合cvInitMatHeader来初始化CvMat对象。
因为CvCreateMat创建的CvMat,对象在堆上,数据也在堆上,所以cvInitMatHeader在指定新的数据所在的位置的同时,也将CvMat::hdr_refcount和CvMat::refcount都置为0,以便cvReleaseMat释放CvMat对象和数据。

  1. #include <cv.h>
  2. #include <stdio.h>
  3. int main()
  4. {
  5. double a[9]={1,2,3,4,5,6,7,8,9};
  6. double* data=0;
  7. CvMat *pm=cvCreateMat(3,3,CV_64FC1);
  8. cvInitMatHeader(pm,3,3,CV_64FC1,a);
  9. data=pm->data.db;
  10. for(int i=0;i<3;i++)
  11. {
  12. for(int j=0;j<3;j++)
  13. {
  14. printf("%3.lf",data[i*3+j]);
  15. }
  16. printf("\n");
  17. }
  18. printf("\n");
  19. cvReleaseData(pm);
  20. cvReleaseMat(&pm);
  21. return 0;
  22. }



二)cvCreateMatHeader创建
cvCreateMatHeader只会创建CvMat,不会为CvMat分配数据。cvCreateMatHeader可以配合cvInitMatHeader来初始化CvMat对象。
因为cvCreateMatHeader创建的CvMat,对象在堆上,所以cvInitMatHeader在指定新的数据所在的位置的同时,也将CvMat::hdr_refcount置为0,以便cvReleaseMat释放CvMat<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/886842
推荐阅读
相关标签
  

闽ICP备14008679号