ter_nk
Пользователи-
Количество публикаций
90 -
Зарегистрирован
-
Посещение
Все публикации пользователя ter_nk
-
\x42\x4D\x96\xE0 \x16\x00\x00\x00 \x00\x00\x36\x00 \x00\x00\x28\x00 \x00\x00\x89\x03 \x00\x00\x28\x02 \x00\x00\x01\x00 \x18\x00\x00\x00 \x00\x00\x60\xE0 \x16\x00\x00\x00 \x00\x00\x00\x00 \x00\x00\x00\x00 \x00\x00\x00\x00 \x00\x00\ вот это байт данных пошел xAB
-
Смещение в шапке файл указано 54
-
вывел m.data в файл как width*heigth* 3, корреляции данных не замечаю. в файле bmp кроме этого еще 619 байт
-
Я смотрю в данные бмп после 54 байта и в конце, и то что мне мат возвращает, похожего нет вроде. Если там есть палитра цветов то она до 54 байта или она влияет на данные в Mat?
-
По-моему писать что-то на асме в данном случае не имеет смысла, потому что получается что здесь писать на асме только ради того чтобы писать на асме.
-
в отладчике работает, наверное не так что-то иниицализирую? 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);
-
Спасибо, дело было в путях, что-то проверил, а что-то забыл.
-
Отлаживаю функцию библиотеки 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);
-
Вывожу изображение, в файл сохраняю с исправленной дисторсией под отладчиком.
-
На входе у меня Mat image = imread("a.bmp",1); distortion_coeffs и intrinsic_Matrix - это коэффициенты, которые я считавыю из xml матрица 566.816 0 526.55 0 564.766 362.365 0 0 1 коэффициенты другие, в принципе применимы к моему изображению Может я и неправильно инициализировал данные, однако тогда странно, что под отладчиком все не просто работает и не падает, а и исправляет искажения. Библиотеки у меня только одной версии, вообще если быбли быблиотеки другой версии что-то бы посыпалось раньше.
-
В отладчике все работает
-
у меня на этой функции initUndistortRectifyMap(A, distortion_coeffs2, R, A, map1.size(), map1.type() , map1, map2); программа падает, выдается ошибка сегментации, под отладчиком проходит
-
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
-
vector<Point3f> _object_points; vector<Point2f> _image_points; Resolution правильный эти векторы заполнены какими-то значениями, вот параметры пустые как раз для того чтоб функция их инициализировала vector<cv::Mat> intPar; vector<cv::Mat> extPar; cv::Mat cameraMatrix; cv::Mat distCoeffs; calibrateCamera(_object_points, _image_points, Resolution, cameraMatrix, distCoeffs, intPar, extPar); падает и ругается, может дело в версии 2.3.1 или все же что-то надо инициализировать? OpenCV Error: Assertion failed (i < 0) in getMat, file .. s/OpenCV-2.3.1/modules/core/src/matrix.cpp, line 898 terminate called after throwing an instance of 'cv::Exception'
-
Обновить до актуальной версии, потому что сборка нужна для соответствующей старой версии линукс, ядро там старое Заменил вектор на просто мат OpenCV Error: Assertion failed (i < 0) in getMat, file /home/tikhon/Downloads/OpenCV-2.3.1/modules/core/src/matrix.cpp, line 898 terminate called after throwing an instance of 'cv::Exception' what(): /home/tikhon/Downloads/OpenCV-2.3.1/modules/core/src/matrix.cpp:898: error: (-215) i < 0 in function getMat
-
Можно открыть и выводить изображения в разных потоках, т.е. это уже вопрос по потокам, по программированию, на мой взгляд это не вопрос по OpenCV.
-
Создаю Mat больший по размеру и пытаюсь как бы по центру Size sz; sz.width = mat_gray.size().width + 200; sz.height = mat_gray.size().height + 200; Mat big_mat = Mat::zeros(sz, CV_8UC3); const Rect roi_rect(100, 100, mat_gray.size().width, mat_gray.size().height); mat_gray.copyTo(big_mat(roi_rect)); на этой строчке ошибка
-
Вначале была ошибка, что там Mat не совпадали. Неэффективно, да, но а есть другие варианты, там же кусками массивов не покопируешь
-
может кому понадобится for(int x=src_rect.x; x < src_rect.width; ++x) { for(int y=src_rect.y; y< src_rect.height; ++y) { for( int c = 0; c < 3; c++ ) { dst_mat.at<Vec3b>(y + y_shift,x + x_shift)[c] = src_mat.at<Vec3b>(y,x)[c]; } } }
-
Работайте не с Мат, а с массивом байтов vector<uchar> buf; imencode(".bmp", image, buf); int size = buf.size(); for (int i = 0; i < size; i++) bArr[i] = (uchar)buf[i]; imdecode - функция обратного преобразования
-
В ПО версии 2.3.1 этой функции нет, может кто знает как это делать в старых версиях?
-
Если требуется точно определить градацию цвета. Теоретически в памяти хранится цветовая гамма и под нее есть шаблон, шаблон определяется и определяются цветовые искажения камеры, но вот где взять такой шаблон, на принтере распечатывать не годится, он может как-то в типографии только создаваться. Или так, есть какой-то приближенный к идеалу шаблон белого (не бумага, а что качественней) и по балансу белого рассчитываются все прочие искажения. Я так понимаю алгоритмы разные, что лучше использовать с использованием Opencv
-
В библиотеке таких функций не нашел, может есть что-то где-то готовое.
-
нужно эти данные передать из библиотеки С++ в проект C# и там можно изображение передать массивом байтов