OpenCV,从位图创建图像对象

时间:2012-01-09 18:35:47

标签: opencv

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

cv::imread(fileName...);

从现有结构创建图像有哪些其他方法?

OpenCV 2.3

2 个答案:

答案 0 :(得分:3)

获取指向数据,图像通道和尺寸的指针,并使用众多构造函数中的一个:

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

这里,CV_8UC3是索引数据类型的openCV方式。 8表示8位,U表示无符号 - 因此它是无符号字符 - 默认图像格式。 C3表示3个通道。如果您的位图具有Alpha通道,您将编写CV_8UC4。如果它是灰色的,那么CV_8UC1,依此类推。

重要:

此构造函数不会复制数据。因此,请确保在使用Mat时保持原始位图对象处于活动状态。如果要复制它,构造函数中有一个“withCopy参数”。只需查看文档。

答案 1 :(得分: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)