2016-10-10 13 views
1

Я обнаруживаю маркеры с помощью aruco;QT C++ - добавленная маркерная реальность

std::vector<int> ids; 
    std::vector<std::vector<cv::Point2f> > corners; 

    cv::aruco::detectMarkers(image, dictionary, corners, ids); 
    if (ids.size() > 0) 
     cv::aruco::drawDetectedMarkers(imageCopy, corners, ids); 

Для того, чтобы использовать метод drawDetectedMarkers, я хотел бы добавить 3D-объект на маркер. Я посмотрел на подобные проекты, которые реализованы на языке C#. Я взял их объект единства. Однако я не уверен, что это лучший способ поместить любой 3D-объект на маркер. Должен ли я использовать openscenegraph или opengl? Я также могу использовать маркерную доску для этого процесса. Я получил rvec (вектор вращения платы) и tvec (перевод вектора платы) в реальном времени. Это мой первый раз в 3d-объекте - QT. Я открыт для всех предложений.

ответ

0

Вы можете использовать библиотеку OpenCV Viz для трехмерной визуализации. На самом деле OpenCV Viz - упрощенная версия OpenSceneGraph. Если у вас есть OpenCV 2.4 или более поздняя версия, Viz по умолчанию. Он поддерживает файлы Mesh в форматах OBJ и PLY. Вы можете преобразовать 3D-объекты в Viz, используя выходы rvec/tvec ARUCO. Вы можете посмотреть мое сообщение для фрагмента кода кода. (Click) Нажмите here для версии OpenCV 2.4 или here для версии 3.1.