2012-11-06 71 views
5

我几乎没有,但我不是很了解如何转换无符号字符**到OpenCV的垫子

unsigned char ** to a cv::Mat 

我知道,一个品种的.data部分::垫UCHAR *

我使用的返回功能和图像的形式...

unsigned char ** output; 

但我的代码的其余部分使用CV ::垫的。我没有我使用的库的源代码,所以不知道它在做什么。

编辑 感谢您的帮助球员,我已经做到了这一点......

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

但图像是黑色的,所以我现在需要找出是否确实有什么存在与否。

对不起,由于缺乏研究,我在紧迫的期限内完成,不是不做作业,而是试图准备好向教授展示结果!

+2

你知道你正在返回的双指针的宽度和高度? – sgarizvi

回答

8

你必须使用Mat constructor的指针数据:

// 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*在此之后使用它。

+0

谢谢,我已经去做了。请参阅编辑下一个问题 – Oliver9523

+1

@ Oliver9523输入数据的格式('void **')是什么?如果它是一个指向二维数组图像数据的指针,则应将其转换为一维数组。 – ArtemStorozhuk

+0

我假设这是一个2D数组,谢谢。我会看看转换它。 – Oliver9523

0

也许你应该在

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

删除*使它就像这样:

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