ゆうき( @BASEBALLY15 )です^^

近年,「AR(仮想現実)技術」が注目されていますよね・・・
色々調べていたのですが,どうやら「ArUcoマーカ」が使われているみたいなんですよね・・・

そうですね^^
OpenCVというライブラリ使うと,簡単に「ArUcoマーカ」を生成することが出来ますよ^^
今回は,「ArUcoマーカ」の生成法についてご紹介します!

お願いします!

ArUcoマーカって何?

そもそも,「ArUcoマーカって何?」と疑問に感じた方がいるのではないでしょうか?

ArUcoマーカ」は,カメラから見たマーカの位置姿勢などを推定する際に使われています.

「AR(仮想現実)技術」で用いられていて,主にロボットに実装されているみたいです^^

「OpenCV」という画像処理で使われているライブラリを使うと,簡単に「ArUcoマーカ」を生成することが出来ます!

Anacondaを使っている方は,「Anaconda Prompt」を開いて,以下のコードを記述してください⤵

pip install opencv-contrib-python

それでは,早速「ArUcoマーカ」を生成するためのコードを見ていきましょう^^⤵

Pythonで「ArUcoマーカ」を生成してみた!

ライブラリを用意しよう!

まずは,ライブラリを用意します.

import cv2
import os
#ディレクトリを消去するためのライブラリ
import shutil

「cv2」をインポートすることで,ArUcoマーカを生成したり利用したりすることが出来ます.

そして,今回は作成した「ArUcoマーカ」をディレクトリに保存したいので,「os」と「shutil」もインポートしておきます.

ちなみに,「os」はディレクトリを作成する際に使い,「shutil」はディレクトリを消去する際に使われます.

ディレクトリを作成しよう!

ArUcoマーカを保存するためのディレクトリを作成します.

関数でまとめておきます.(←ディレクトリを作成する用の関数)

#ディレクトリを作成するための関数
def Directory():
    #名前と場所の指定
    #"./"は,現在のパスを意味している
    name = "ArUco_file"
    dir_place = "./" + name
    
    #もし,既にディレクトリがあれば消去する
    if os.path.exists(dir_place):
        
        shutil.rmtree(dir_place)
        
    #もし,ディレクトリが無ければ作成する
    if not os.path.isdir(dir_place):
        
        os.mkdir(dir_place)

7から10行目で,「既にディレクトリが存在している場合にそのディレクトリを消去する」という処理を行っている理由は,もし消去していない状態で,ディレクトリを作成するコードを実行すると,エラーが出てしまうからです.

ですので,この2文は必ず記述してください.

(※もし,消去しなくてもよい方法があれば,教えて欲しいです!)

ArUcoマーカを生成してみよう!(本題)

それでは,本題の「ArUcoマーカ」を生成していきます.

ArUcoマーカを生成する用の関数を用意します.

#マーカーの生成
#arucoライブラリを用意
aruco = cv2.aruco
#マーカの辞書を取得
dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)

#マーカーを生成するための関数
def arGenerator():
    #30個のマーカを生成する
    for i in range(30):
        #保存するための画像を用意
        fileName = "ArUco_file/"+"id{}.png".format(i)
        #保存する中身(i番目のマーカ画像を生成する)
        generator = aruco.drawMarker(dictionary,i,100)
        
        #画像に保存内容を反映させていく
        cv2.imwrite(fileName,generator)
        
    cv2.waitKey(0)

for文で30個のマーカを生成しています.

また,「fileName = “ArUco_file/”+”id{}.png”.format(i)」と書くことで,ファイルの保存先を先ほど作成したディレクトリに指定しています.

実行しよう!

それでは,上で作った関数を実行します.

#上で作った関数を実行する   
if __name__ == "__main__":
    
    #ディレクトリを作成するための関数
    Directory()
    
    #マーカーを生成するための関数
    arGenerator()

これで,「ArUcoマーカ」を生成することが出来ます^^

終わりに

最後まで読んでいただき,ありがとうございます!

今回は,「ArUcoマーカの生成法」についてご紹介しました.

OpenCVを使うことで,簡単に生成できるということが分かりましたね^^

今後は,ArUcoマーカを使って,実際に作品を作っていこうと考えています!

今後もよろしくお願い致します!

それでは・・・

Q &A

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA