Я написал код, чтобы найти карту несоответствия с двух изображений «слева» и «справа»; и сохранение карты в «стерео». Код кажется, хорошо для меня, но как-то я получаю исключение:opencv дает исключение с cvFindStereoCorrespondenceBM
На окне терминала:
OpenCV Error: Bad argument (Unknown array type) in unknown function, file ......\src\opencv\modules\core\src\matrix.cpp, line 698
код
Mat left = imread("files\\left.jpg");
Mat right = imread("files\\right.jpg");
Size size = left.size();
namedWindow("left", CV_WINDOW_AUTOSIZE);
imshow("left", left);
cvNamedWindow("right", CV_WINDOW_AUTOSIZE);
imshow("right", right);
Mat left_C1;
cvtColor(left, left_C1, CV_RGB2GRAY);
Mat right_C1;
cvtColor(right, right_C1, CV_RGB2GRAY);
Mat stereo = Mat(size, CV_16SC1);
CvStereoBMState* state = cvCreateStereoBMState();
state->preFilterSize=5;
state->preFilterCap=1;
state->SADWindowSize=5;
state->minDisparity=0;
state->numberOfDisparities=64;
state->textureThreshold=0;
state->uniquenessRatio=0;
cvFindStereoCorrespondenceBM(&left_C1, &right_C1, &stereo, state);
namedWindow("stereo", CV_WINDOW_AUTOSIZE);
imshow("stereo",stereo);
waitKey(0);
Я использую VS конечной 2012, Windows 8 , OpenCV 2.4.4. Пожалуйста, объясните, как исправить это исключение.
+1 Я собирался предложить использовать 'недействительной StereoBM :: оператор()' из C++ – Alexey
C++ API StereoBM работала как шарм! Спасибо. – Jekin