В настоящее время я работаю над школьным проектом с «автономным» автомобилем, мне нужно спроецировать изображение с моей камеры (которая расположена на машине и слегка наклонена) на двухмерную поверхность, представляющую дорогу (я предполагаю, что дорога идеально плоский), учитывая FOV, положение и угол моей камеры относительно поверхности, как бы я проецировал ее в OpenCV? Что мне нужно точно, так это то, чтобы проекция была такой, как если бы я снимал дорога сверху под углом 90°. Заранее спасибо за помощь...
OpenCV, проекция на 3D-поверхность
Ответы (1)
используйте функцию opencv, чтобы сделать это
C++: void reprojectImageTo3D(InputArray disparity, OutputArray _3dImage, InputArray Q, bool handleMissingValues=false, int ddepth=-1 )
Матрица Q обратна матрице проекции K, которая содержит центр камеры и fx fy
Вы можете искусственно создать несоответствие, скажем, карту градиента, чтобы представить глубину плоской поверхности.
Затем передайте Q, disparty и output3Dmat, который вы хотите
Программа даст вам то, что вы хотите
person
Dr Yuan Shenghai
schedule
25.05.2019
Хе-хе, немного поздно :) Я сделал это неправильно, используя warpPerspective (неверно, потому что дальнейшие вещи ближе по оси Y), но в конце это сработало: P, большое спасибо за ваш ответ, я запомню это в следующий раз
- person Angramme; 26.05.2019