Tuesday, January 2, 2018

aruco - print out opencv aruco markers 印出二維碼

---

使用Aruco Marker的第一步就是先把這些marker印出來

有些人會說他已經設置好了OpenCV的library為什麼沒有aruco的函式庫可以用

這是因為還沒有裝好他的擴充函式庫

這個要另外下載

可以參考我之前寫的這篇 opencv - set up extra module

或是這個影片(聽不懂英文沒關係, 跟著做就對了)





---


#include <iostream>

#include "opencv2\opencv.hpp"

#include "opencv2\aruco.hpp"

#include <direct.h>

#include <string>


using namespace std;

using namespace cv;


int main()

{


    Mat outputImg;


     Ptr <aruco::Dictionary> markerDic = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME::DICT_4X4_50);


     for (int index = 0; index < 50; index++)

     {

         aruco::drawMarker(markerDic, index, 500, outputImg, 1);  //把放在markerDic裡的marker放到輸出圖(outputImg)裡

         string folderName = ".//markers//";                      //設定放置的資料夾名稱

         _mkdir(folderName.c_str());                              //新建資料夾                           

         imwrite(folderName + to_string(index) + ".png", outputImg);     //儲存圖片

     }



    system("pause");

    return 0;

}


---


這是範例程式碼

使用 aruco::getPredefinedDictionary 函式先取得二維標誌的資料

再用 aruco::drawMarker 把二維標誌的圖像畫到 Mat圖像上

run下去之後應該可以在叫做 markers的資料夾找到所有的二維標誌png圖像




其中

aruco::PREDEFINED_DICTIONARY_NAME::DICT_4X4_50

代表這是4x4大小的marker有50張

而幾乘幾的marker是以扣掉外圈的黑色裡面的格子數而定


--

最後選幾張自己想要用來做實驗的印出來就可以囉




No comments:

Post a Comment