Я использовал пример кода, который поставляется с opencv, для калибровки веб-камеры моего ноутбука.
Я создал около 82 изображений с шахматной доски и использовал код для их обработки.
Результат выглядит следующим образом:
This is a camera calibration sample.
Usage: calibration configurationFile
Near the sample file you'll find the configuration file, which has detailed help
of how to edit it. It may be any OpenCV supported file format XML/YAML.
Re-projection error reported by calibrateCamera: 0.424482
Calibration succeeded. avg re projection error = 0.424483
| Кажется, что ошибка проекции avg такая же, как и раньше. Почему это происходит?
Как создать карту для преобразования некалиброванного изображения в калиброванное?
Инструмент калибровки должен был сгенерировать файл XML / YML, в котором он хранит коэффициенты камеры K
и коэффициенты искажения D
, Вы можете загрузить эти коэффициенты, используя cv::FileStorage
учебный класс (ссылка на документацию). Этот урок объясняет, как использовать этот класс.
Как только у вас есть данные калибровки (матрица K
и коэффициенты искажения D
), вы можете использовать undistort
функция (ссылка на документацию) для создания идеального изображения, в котором было исправлено искажение объектива.
Что касается вашего второго вопроса, два числа, отображаемые в консоли, являются оценками ошибки перепроецирования после калибровки, одно сообщается в конце процедуры калибровки, а второе — в исполняемом файле калибровочного образца.
Других решений пока нет …