MacでOpenCV2.4をDockerを用いて扱う

2023/12/12に公開

この記事は 一関高専 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からダウンロードしてください。

https://github.com/swrd06bp/Dockerfile-opencv-2.4/

このファイルを解凍し、解凍したフォルダに移動します。

例えば、解凍した後、以下のようにします。

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