ter_nk 0 Жалоба Опубликовано February 10, 2015 в отладчике работает, наверное не так что-то иниицализирую? Mat distort_mat, new_instrisic_mat, _dst; _dst.create( image.size(), image.type()); int stripe_size0 = image.rows; Mat map1(stripe_size0, image.cols, CV_32FC(1)), map2(stripe_size0, image.cols, CV_32FC(1)); Mat R = Mat_<double>::eye(3,3); Mat_<double> A, Ar; intrinsic_Matrix.convertTo(A, CV_64F); initUndistortRectifyMap(A, distortion_coeffs2, R, A, map1.size(), map1.type() , map1, map2); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 10, 2015 А описание ошибки добавить. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ter_nk 0 Жалоба Опубликовано February 10, 2015 Program terminated with signal 11, Segmentation fault. #0 0x001f31f0 in cv::getDefaultNewCameraMatrix(cv::_InputArray const&, cv::Size_<int>, bool) () from /usr/local/lib/libopencv_imgproc.so.2.3 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 10, 2015 А минимальный код для копипаста воспроизводящий ошибку ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ter_nk 0 Жалоба Опубликовано February 10, 2015 у меня на этой функции initUndistortRectifyMap(A, distortion_coeffs2, R, A, map1.size(), map1.type() , map1, map2); программа падает, выдается ошибка сегментации, под отладчиком проходит Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 10, 2015 Программисты очень ленивые занятые люди Если им нужно что то еще приделывать к Вашему коду, чтобы посмотреть в своей любимой IDE в отладчике, и попробовать свои предположения, то это их удручает Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ter_nk 0 Жалоба Опубликовано February 10, 2015 В отладчике все работает Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 10, 2015 1) Тогда укажите какие данные у вас на входе (точно, с типами, размерами), это не понятно по тому куску который вы приводите. 2) Не факт, что Вы правильно инициализировали эти данные. 3) Вероятно, что подключены библиотеки не той конфигурации. Этих всех вопросов можно было бы избежать при правильно сформулированной проблеме. С минимальным (но полным (скопировал и запустил) ) кодом воспроизводящим ошибку. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ter_nk 0 Жалоба Опубликовано February 10, 2015 На входе у меня Mat image = imread("a.bmp",1); distortion_coeffs и intrinsic_Matrix - это коэффициенты, которые я считавыю из xml матрица 566.816 0 526.55 0 564.766 362.365 0 0 1 коэффициенты другие, в принципе применимы к моему изображению Может я и неправильно инициализировал данные, однако тогда странно, что под отладчиком все не просто работает и не падает, а и исправляет искажения. Библиотеки у меня только одной версии, вообще если быбли быблиотеки другой версии что-то бы посыпалось раньше. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 10, 2015 Библиотеки имеют релизную и отладочную версии и путать их нельзя. Проверьте, считывается ли изображение. Выведите его после загрузки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ter_nk 0 Жалоба Опубликовано February 10, 2015 Вывожу изображение, в файл сохраняю с исправленной дисторсией под отладчиком. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 10, 2015 Если запускать из IDE то рабочие директории для Debug и Release разные (если не задано обратное)! И пути в которых программа ищет изображение тоже разные. Проверить можно задав абсолютный путь к изображению. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ter_nk 0 Жалоба Опубликовано February 10, 2015 Отлаживаю функцию библиотеки initUndistortRectifyMap( InputArray _cameraMatrix, InputArray _distCoeffs, InputArray _matR, InputArray _newCameraMatrix, Size size, int m1type, OutputArray _map1, OutputArray _map2 ) спотыкается на CV_Assert( A.size() == Size(3,3) && A.size() == R.size() ); и справедливо, поскольку А = Mat_<double>(cameraMatrix) у меня она 3х3 R = Mat_<double>::eye(3,3); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 10, 2015 CV_Assert выбрасывает ошибку когда условие в скобках НЕ выполнено. Выведите в консоль размеры матриц. cout << A << endl; cout << R << endl; 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ter_nk 0 Жалоба Опубликовано February 11, 2015 Спасибо, дело было в путях, что-то проверил, а что-то забыл. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах