3

Я недавно наткнулся на this video и хотел бы реализовать нечто подобное. Основной подход ясен: мне нужно установить порог изображения и проверить, сталкивается ли виртуальный объект с остальным передним планом.Как интегрировать изображение камеры в физический движок?

Вместо того чтобы реализовать физику самостоятельно, я бы хотел использовать двигатель, такой как Box2D. Но как мне интегрировать порожденное изображение в физический движок, чтобы можно было взаимодействовать с виртуальными объектами?

ответ

4

Вы хотите сделать обнаружение края. Для этого существуют алгоритмы с открытым исходным кодом. Хотя вы можете порог, как вы предлагаете, хорошие алгоритмы обнаружения края будут работать без этого и могут быть более увлекательными, потому что вам не нужен сплошной белый фон, чтобы получить интересные результаты. Ознакомьтесь с OpenCV http://www.mathworks.com/products/imaq/demos.html?file=/products/demos/shipping/imaq/demoimaqsl_edgedetection.html для стартеров.

Пограничные детекторы в конечном итоге производят векторы в пиксельных координатах в качестве выходных данных. Вы захотите превратить их в объекты Box2D b2_staticBody, которые перемещаются под программным управлением в соответствии с теми же временными рядами, что и видеокадры, которые генерировали ребра. Теперь вы можете добавить кинетические объекты в среду Box2D, и они будут вести себя так, как если бы края были неподвижными.

В конце концов вам нужно будет наложить вывод Box2D на видеокадры. OpenCV также должен помочь этому. Или вы можете использовать инструмент редактирования видео.

Это будет значительно больше работы, но вы даже можете заставить это работать в режиме реального времени. Обратите внимание, что если у вас есть доступ к MATLAB, у него есть детектор края видеофрагмента в одном из панелей инструментов.