7

我快到了,但我不太明白如何转换

unsigned char ** to a cv::Mat

我知道 cv::Mat 的 .data 部分是 uchar*

我正在使用一个以...的形式返回和图像的函数

unsigned char ** output;

但我的其余代码使用 cv::Mat's。我也没有我正在使用的库的源代码,所以我真的不知道它在做什么。

编辑 感谢您的帮助,我已经做到了...

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output);
imshow("this is a test",TempMat);

但图像是黑色的,所以我现在需要找出那里是否真的有任何东西。

抱歉缺乏研究,我的截止日期很紧,不,这不是家庭作业,试图准备一些东西来向教授展示结果!

4

2 回答 2

11

您必须使用带有指向数据的指针的Mat 构造函数:

 // constructor for matrix headers pointing to user-allocated data
    Mat(int _rows, int _cols, int _type, void* _data, size_t _step=AUTO_STEP);
    Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP);

您必须转换void**void*并在此之后使用它。

于 2012-11-06T17:03:53.533 回答
1

也许你应该*删除

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output);

让它像这样:

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, output);
于 2015-09-22T09:32:17.220 回答