OpenCV构造来自float *数组的Mat

时间:2014-09-11 22:06:02

标签: c++ arrays opencv constructor mat

我正在尝试使用OpenCV Mat :: Mat构造函数和传入数据的选项。

我在这个论坛上看到你可以传入一个指向数组的浮点指针,但是每次我这样做都试图传递地址(我认为这就是发生的事情)而不是来自阵列。

我尝试了两种创建float数组的方法:

float *outputimg = (float*)malloc(img1.rows*img1.cols*sizeof(float));

float *outputimg = (float*)malloc(img1.step*img1.elemSize());

然后我尝试了Mat构造函数,如下所示:

Mat contrastimg(img1.rows, img1.cols, CV_32F, outputimg, img1.step);

Mat contrastimg(img1.rows, img1.cols, CV_32F, outputimg);

Mat contrastimg(img1.rows, img1.cols, CV_32F, outputimg, img1.cols*sizeof(float));

这些都不适合我。有什么想法吗?

1 个答案:

答案 0 :(得分:-2)

我认为,做到你需要的最好方法是首先convert指向CvMat矩阵,然后construct指向Mat对象。看起来应该是这样的:

CvMat* m = new CvMat;
m->type = yourType;
m->data.fl = outputimg;
m->rows = img1.rows;
m->cols = img1.cols;

Mat matrix(m);