2016-10-10 61 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庫進行3D可視化。其實OpenCV Viz是OpenSceneGraph的簡化版本。如果你有OpenCV 2.4或更高版本,Viz是默認的。它支持OBJ和PLY格式的Mesh文件。您可以使用ARUCO的rvec/tvec輸出在Viz中轉換3D對象。你可以看看我的帖子,查看示例代碼片段。 (Click)單擊here用於OpenCV 2.4版本,或here用於3.1版本。