⛳
MacでOpenCV2.4をDockerを用いて扱う
この記事は 一関高専 Advent Calendar 2023アドベントカレンダーの13日目です。
画像処理等でOpenCV2.4が必要な場面が多々あると思うので、ぜひ活用してください。
概要
授業で、OpenCV2.4を使う必要がありました。
OpenCV2.4をMacで直接インストールしようとしてみたが、めんどくさくて諦めました。
そのため、Dockerを用いてOpenCV2.4を扱いたいと思います。
ただ、DockerではGUIが扱えないので、XQuartzを用いてGUIを転送し、OpenCV2.4を扱えるようにします。
XQuartzのインストール
xquartz とは
ウィンドウを転送するためのシステムである、X Window Systemの(X11)Mac版です。
インストール
brew install --cask xquartz
セットアップ
Dockerから、画像を転送するためにセキュリティー設定を緩和します。
- XQuartzを起動し、環境設定 > セキュリティーを開きます。
- ネットワーククライアントからの接続を許可にチェックを入れます。
- 接続を認証 のチェックマークを外します。
Dockerfileのビルド
OpenCV2.4 がすでに構築されているDockerfileがあったためこれをダウンロードします。
以下のリンクを開き、Download ZIPからダウンロードしてください。
このファイルを解凍し、解凍したフォルダに移動します。
例えば、解凍した後、以下のようにします。
cd ~/Downloads/Dockerfile-opencv-2.4-master
Dockerfileをビルドします。
docker build -t opencv2.4 .
Dockerで実行
xquartzを起動しておきます。
先ほどbuildしたイメージを指定し、コンテナを起動します。
また、この時にDISPLAY環境変数を設定します。
docker run -e DISPLAY="$(hostname):0" --rm -it opencv2.4
コンテナ内で、以下のコマンドを実行します。
cd OpenCV/samples/c
bash build_all.sh
この中で、コンパイルされた適当な物を実行します。
./morphology
猿が表示されれば成功です。
また、オリジナルのcppファイルをコンパイルして実行することもできます。
c 言語は以下のようにします。
gcc -ggdb `pkg-config --cflags opencv` `pkg-config --libs opencv` main.c -o main
cpp 言語は以下のようにします。
g++ -ggdb `pkg-config --cflags opencv` `pkg-config --libs opencv` main.cpp -o main
Discussion