unsigned char ** to opencv mat

Oliver9523 picture Oliver9523 · Nov 6, 2012 · Viewed 26.6k times · Source

I'm almost there but I can't quite understand how to convert

unsigned char ** to a cv::Mat

I know that the .data part of a cv::Mat is uchar*

I'm using a function that returns and image in the form of...

unsigned char ** output;

But the rest of my code uses cv::Mat's. I don't have the source for the lib I'm using either so don't really know what it's doing.

Edit Thanks for the help guys, I've done this...

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

but the image is black so I now need to find out if there's actually anything there or not.

Sorry for lack of research i'm on a tight deadline, no it's not homework, trying to get something ready to show results to a Professor!

Answer

ArtemStorozhuk picture ArtemStorozhuk · Nov 6, 2012

You have to use Mat constructor with a pointer to data:

 // 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);

You have to convert void** to void* and after this use it.