Так что я очень новичок в OpenCV (2.1), поэтому, пожалуйста, имейте это в виду.OpenCV cvRemap Cropping Image
Таким образом, мне удалось откалибровать мою дешевую веб-камеру, которую я использую (с привязкой), используя метод калибровки шахматной доски для получения внутренних и искажающих коэффициентов.
У меня тогда нет проблем с возвратом этих значений и созданием карт изображений, которые затем я применяю к видеопотоке для исправления входящих изображений.
Однако я столкнулся с проблемой. Я знаю, когда он искажает/исправляет изображение, он создает несколько перекошенных разделов, а затем форматирует изображение, чтобы вырезать любые черные области. Тогда мой вопрос: могу ли я просмотреть полное искаженное изображение, в том числе в некоторых регионах с черными областями? Ниже приведен пример черных регионов с перекошенными участками, которые я пытался передать, если моя терминология отключена:
Изображение, лучше передающее регионы, о которых я говорю, может быть found here! Это изображение было обнаружено в этом post.
В настоящее время: cvRemap() возвращает в основном желтую рамку в изображении, указанном выше, но я хочу видеть все изображение, так как есть соответствующие данные. Я хочу выбраться из него.
Что я пробовал: Применяя преобразование масштаба на карту изображения, чтобы соответствовать полному изображению (в том числе вытянутых частей) в раму
CvMat *intrinsic = (CvMat*)cvLoad("Intrinsics.xml");
CvMat *distortion = (CvMat*)cvLoad("Distortion.xml");
cvInitUndistortMap(intrinsic, distortion, mapx, mapy);
cvConvertScale(mapx, mapx, 1.25, -shift_x); // Some sort of scale conversion
cvConvertScale(mapy, mapy, 1.25, -shift_y); // applied to the image map
cvRemap(distorted,undistorted,mapx,mapy);
cvConvertScale, когда я думаю, что я выравниваюсь х/y правильно (угадать/проверить), как-то искажает карту изображения, делая корректировку бесполезной. Здесь может быть какая-то математика, я не правильно понимаю/понимаю.
Есть ли у кого-нибудь другие предложения по решению этой проблемы или что я могу делать неправильно? Я также попытался написать свой собственный код, чтобы исправить проблемы с искажениями, но позволяет просто сказать, что OpenCV уже знает, как это сделать.
Mathematical.coffee, я не могу вас поблагодарить. Это было именно то, что я искал, и с вашим подробным решением я смог реализовать его соответственно! Спасибо огромное! – user1145707
не беспокоился :) мне потребовалось время от времени, чтобы это исправить (я считаю, что онлайн-документацию немного сложно понять, особенно, когда я использую интерфейс python). Один неоценимый ресурс (я нахожу) - это примеры, включенные в OpenCV (в «OpenCV-2.x.x/samples/pick_your_language»). –
Но выпрямленное изображение все еще имеет черную область или границы. – Abc