Перейти к содержимому
Compvision.ru

erly

Пользователи
  • Количество публикаций

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О erly

  • Звание
    Новичок
  1. Нашел рабочий вариант. Если кому интересно: Калибровку делал в 2 этапа. 1. Разделил все 3D точки реального объекта на плоскости (Z координаты обнулил), подал их в calibrateCamera отдельными векторами. И 2D точки из плоскости кадра разделил на отдельные векторы тоже. В результате получилось первое приближение cameraMatrix (M) и Distortions (D). Матрицы вращения (R) и положения (T) игнорируются. 2. Второй вызов calibrateCamera. У нее в параметрах Все 3D точки одним общим вектором, 2D точки одним вектором, M и D из первого шага. Вызов функции без флагов. В результате получились уточненные M и D, а также вычисленные R и T. Проверка по отображению других 3D точек объекта в 2D картинную плоскость прошла успешно. Всем спасибо, кто думал над задачей. Ваши мысли, выпущенные в ноосферу, безусловно помогли поиску решения.
  2. Делал себе такое в целях отладки. Чтобы все время видеть результат обработки видео с удаленного сервера. Программа работает на сервере (Ubuntu) и сохраняет результаты обработки каждого кадра в файл test.jpg, постоянно его перезаписывая. Запуск трансляции с сервера на клиентскую машину: tail -f test.jpg 2> /dev/null | ffmpeg -r 50 -f image2pipe -c:v mjpeg -i - -r 50 -c:v libx264 -sdp_file h264.sdp -f rtp rtp://10.2.0.2:1234 Здесь 10.2.0.2 - адрес клиентской машины. При запуске ffmpeg формирует файлик h264.sdp. Передаем этот файлик на клиентскую машину (Windows) и открываем в VLC Player. Либо, при наличии доступа, открываем файл в VLC Player-е удаленно с сервера.
  3. Всем привет. Подскажите, пожалуйста, возможно ли откалибровать камеру, если известны 3D координаты нескольких (50) точек из реального мира и соответствующие им 2D координаты на изображении от камеры? Требуется найти как внутренние, так и внешние параметры камеры. Калибровать пытаюсь методом calibrateCamera. Мануалы с туториалами описывают калибровку с помощью шахматной доски нескольких видов. Оно работает нормально, только мне такое не подходит. Надо как-то обойтись настоящими координатами известных реперных точек в пространстве. Камера стоит в фиксированном положении относительно объекта съемки, поэтому по идее после вызова функции ожидаю получить не только Camera Matrix и Distortions, но и корректные Translation и Rotation векторы. Пробовал такие варианты: 1. В параметрах функции указываю реальные 3D координаты единым блоком: vector<vector<Point3f>>. Размерность вектора получается [1][50]. Аналогично для проективных точек: vector<vector<Point2f>>. Вызов функции приводит к ошибке: .. opencv-3.4.2/modules/calib3d/src/calibration.cpp:1468: error: (-5:Bad argument) For non-planar calibration rigs the initial intrinsic matrix must be specified in function 'cvCalibrateCamera2Internal' Ругается, что калибровочный шаблон - не плоскость. А он действительно не плоскость, а набор точек в некотором объеме пространства. 2. То же самое, но с флагом CV_CALIB_USE_INTRINSIC_GUESS. Ошибки нет, все матрицы вычислились. Но проверка не проходит. Пересчет проверочных 3D точек в экранные координаты выполняется не верно, ошибка сильная и бессистемная. Что я делаю не так? Кто-нибудь сталкивался с подобной задачей?
×