OpenCV,从位图创建图像对象

3

我已经有一个包含图像的位图数组,现在我需要构建一个openCV对象来操作它。我所看到的唯一构造函数是:

cv::imread(fileName...);

还有哪些从现有结构创建图像的方法?

OpenCV 2.3

2个回答

4

获取数据指针、图像通道和维度,并使用其中的一个构造函数:

Mat image(width, height, CV_8UC3, ucharDataPtr);

在这里,CV_8UC3是openCV用于索引数据类型的方式。 8表示8位,U表示无符号 - 因此它是无符号字符 - 默认图像格式。 C3表示3个通道。 如果您的位图具有Alpha通道,则将编写CV_8UC4。 如果是灰度,则为CV_8UC1,依此类推。
重要提示:
此构造函数不会复制数据。 因此,请确保在使用Mat时保持原始位图对象处于活动状态。 如果要复制它,则构造函数中有一个“withCopy参数”。 只需查看文档即可。

如果您想复制数据,请使用Mat image(width,height,CV_8UC3,ucharDataPtr)。clone()。 - min.yong.yoon

0
只需将IplImage或cvMat指向数组即可。cvMat的结构如下:
CvMat                      // 2D array
  |-- int   type;          // elements type (uchar,short,int,float,double) and flags
  |-- int   step;          // full row length in bytes
  |-- int   rows, cols;    // dimensions
  |-- int   height, width; // alternative dimensions reference
  |-- union data;
      |-- uchar*  ptr;     // data pointer for an unsigned char matrix
      |-- short*  s;       // data pointer for a short matrix
      |-- int*    i;       // data pointer for an integer matrix
      |-- float*  fl;      // data pointer for a float matrix
      |-- double* db;      // data pointer for a double matrix

(http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接