я наткнулся на ошибку во время выполнения stereoCalibrate в OpenCV 2.4.11, который говорит:Ассамблеи объяснение о stereoCalibrate ошибке с OutputArray :: Создание ошибка утверждение
OpenCV Error: Assertion failed (!fixedSize() || ((Mat*)obj)->size.operator()() == Size(cols, rows)) in cv::_OutputArray::create,
Я думаю, что это должно быть какая-то ошибка размера между ними параметры, которые проходят через них один за другим. Но есть еще ошибка. Я надеюсь, что кто-то удивительный может найти ошибку из кода сборки ниже. Вот вызов метода в моем коде.
double error = cv::stereoCalibrate(
objPoints, cali0.imgPoints, cali1.imgPoints,
camera0.intr.cameraMatrix, camera0.intr.distCoeffs,
camera1.intr.cameraMatrix, camera1.intr.distCoeffs,
cv::Size(1920,1080), m.rvec, m.tvec, m.evec, m.fvec,
cv::TermCriteria(CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 100, 1e-5)
,CV_CALIB_FIX_INTRINSIC + CV_CALIB_USE_INTRINSIC_GUESS
);
В моем коде, это m.rvec (3,3, CV_64F), m.tvec есть (3,1, CV_64F), m.evec и m.fvec не выделяется заранее что то же самое с Пример стереокалибровки. И intr.cameraMatrix - это (3,3, CV_64F), а intr.distCoeffs - это (8,1, CV_64F), objPoints вычисляется с шахматной доски, которая хранит трехмерное положение углов, а все значение z для точки равно нулю.
После прочтения совета от @Josh, я изменяю код как простой выходной мат-объект, который находится в CV_64F, но он все равно выбрасывает это утверждение.
cv::Mat R, t, e, f;
double error = cv::stereoCalibrate(
objPoints, cali0.imgPoints, cali1.imgPoints,
camera0.intr.cameraMatrix, camera0.intr.distCoeffs,
camera1.intr.cameraMatrix, camera1.intr.distCoeffs,
cali0.imgSize, R, t, e, f,
cv::TermCriteria(CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 100, 1e-5));
Наконец я решил эту проблему, как напоминание, убедитесь, что параметры камеры вы прошли в не const
типа ....
Сборка, которую вы показали, кажется, не имеет отношения к вашей проблеме. Вам нужно показать полный пример исходного кода, который демонстрирует проблему, в частности минимальный, полный и проверяемый пример. Слишком опасно предположить, что сообщение об ошибке с подтверждением, похоже, говорит о том, что один из ваших объектов '_OutputArray' не имеет такого размера, который он должен иметь. –
Спасибо, Росс, ваш совет очень полезен, что заставляет меня начать поиск исходного кода. Это действительно не относится к сборке, сборка показывает мне только расположение параметра, которое приводит к утверждению. В следующий раз я буду уделять больше внимания этой должности. :) – EdwinDebuger