opencv stereo correspondence "OpenCV Error: Bad argument (Unknown array type) in cvarrToMat"
I'm trying to compute depth using stereo correspondence but keep getting the error in the title of this question. I don't really know how to debug this.
Code:
void imageprocess::get_depth()
{
Size size = bridge[0]->image.size();
Mat imgl, imgr, disp;
cvtColor(bridge[0]->image, imgl, CV_RGB2GRAY, 1);
cvtColor(bridge[1]->image, imgr, CV_RGB2GRAY, 1);
CvStereoBMState* state = cvCreateStereoBMState(0, 16);
cvFindStereoCorrespondenceBM(&imgl, &imgr, &disp, state);
cvReleaseStereoBMState(&state);
imshow(WINDOWM, disp);
waitKey(3);
}
Unless my C++ is a lot rustier than I thought, I think I'm using the functions correctly. Which is why I don't see any problem with my code.
It works fine without:
cvFindStereoCorrespondenceBM(&imgl, &imgr, &disp, state);
and the function decleration is:
cvFindStereoCorrespondenceBM(const CvArr* left, const CvArr* right, CvArr* disparity, CvStereoBMState* state)
Edit: I also tried from http://stackoverflow.com/questions/11027574/convert-cvmat-to-const-cvmat-or-cvmat:
Size size = bridge[0]->image.size();
Mat imgl, imgr;
cvtColor(bridge[0]->image, imgl, CV_RGB2GRAY, 1);
cvtColor(bridge[1]->image, imgr, CV_RGB2GRAY, 1);
CvMat cvimgl, cvimgr, cvdisp;
cvimgl = imgl;
cvimgr = imgr;
CvStereoBMState* state = cvCreateStereoBMState(0, 16);
cvFindStereoCorrespondenceBM(&cvimgl, &cvimgr, &cvdisp, state);
cvReleaseStereoBMState(&state);