当前位置:   article > 正文

初始化Mat的几种方法

初始化mat

1. 调用Mat的构造函数或者create函数,如: 

  1. // make a 7x7 complex matrix filled with 1+3j.
  2. Mat M(7,7,CV_32FC2,Scalar(1,3));
  3. // and now turn M to a 100x60 15-channel 8-bit matrix.
  4. // The old content will be deallocated
  5. M.create(100,60,CV_8UC(15));

2. 调用拷贝构造函数或赋值操作符。注意,调用拷贝构造函数或赋值操作符时,只会拷贝Mat的头部,并增加reference count,并不会真正拷贝数据。如果要进行数据拷贝,可以调用clonecopyTo函数。

  1. Mat M1(M);
  2. Mat M2 = M;
  3. Mat M3 = M.clone();
  4. Mat M4;
  5. M.copyTo(M4);

这里的M1, M2M共用同一处数据;而M3,M4是拷贝了M的数据。

 

3. 给user-allocated数据增加头部信息。如:

  1. void process_video_frame(const unsigned char* pixels,
  2. int width, int height, int step)
  3. {
  4. Mat img(height, width, CV_8UC3, pixels, step);
  5. GaussianBlur(img, img, Size(7,7), 1.5, 1.5);
  6. }



另外,可以调用Mat::operator CvMat() Mat::operator IplImage()CvMatIplImage转换成Mat

  1. IplImage* img = cvLoadImage("greatwave.jpg", 1);
  2. Mat mtx(img); // convert IplImage* -> Mat
  3. CvMat oldmat = mtx; // convert Mat -> CvMat


参考:

http://docs.opencv.org/modules/core/doc/basic_structures.html#mat

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

闽ICP备14008679号