OpenCV,从位图创建图像对象

OpenCV,从位图创建图像对象,opencv,Opencv,我有一个位图数组已经包含了一个图像,然后我需要构造一个openCV对象来操作它。我看到的唯一构造函数是: cv::imread(fileName...); 从现有结构创建图像的其他方法有哪些 OpenCV 2.3只需将IplImage或cvMat指向阵列即可。cvMat的结构如下所示: CvMat // 2D array |-- int type; // elements type (uchar,short,int,float

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

cv::imread(fileName...);
从现有结构创建图像的其他方法有哪些


OpenCV 2.3

只需将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)

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

Mat image(width, height, CV_8UC3, ucharDataPtr);
在这里,CV_8UC3是索引数据类型的openCV方法。8表示8位,U表示无符号-因此它是无符号字符-默认图像格式。C3表示3个通道。如果位图具有alpha通道,则将写入CV_8UC4。如果为灰色,则为CV_8UC1,依此类推

重要提示:

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

Mat image(宽度、高度、CV_8UC3、ucharDataPtr)。如果要复制数据,请克隆();