🙆‍♀️

GoCVを使ってみた

2022/09/17に公開

初めまして。
わたる と申します。

以前はqiitaで自身の備忘録も兼ねまして記事を投稿していたのですが、こちらに引っ越しいたしまして、まずはqiitaで書いた記事を幾つか転載しようかと思います。

初めに

最近ちょっとした機会があり、お勉強のためGo言語による OpenCVパッケージ「GoCV」を触ることがありましたので、導入と少しハマったところをまとめました。

環境[1]

  • ホストOS:Windows 10
  • VirtualBox:6.1.38
  • ゲストOS:Ubuntu 18.04 LTS

goのセットアップ

sudo apt install -y golang

OpenCVのセットアップ

セットアップは下記の記事を参考にしました。
Ubuntu 18.04 ServerにOpenCV 4.1.0をソースからインストール(install-opencv.sh使用)

事前にインストールしていたOpenCVの削除

sudo apt autoremove libopencv-dev python-opencv

インストールシェルの取得

wget --no-check-certificate https://raw.githubusercontent.com/milq/milq/master/scripts/bash/install-opencv.sh

ファイルの編集

install-opencv.sh
######################################
# INSTALL OPENCV ON UBUNTU OR DEBIAN #
######################################

# -------------------------------------------------------------------- |
#                       SCRIPT OPTIONS                                 |
# ---------------------------------------------------------------------|
OPENCV_VERSION='4.5.1'       # Version to be installed
OPENCV_CONTRIB='NO'          # Install OpenCV's extra modules (YES/NO)
# -------------------------------------------------------------------- |

上記の「OPENCV_VERSION」と「OPENCV_CONTRIB」を必要に応じて編集。

インストール実行

chmod +x install-opencv.sh
./install-opencv.sh

そこそこ、時間がかかります。[2]

GoCVの導入

ようやく、本題。
以下のページを参考にさせていただきました。
GoCVを試すまでのお話

インストール

go get -u -d gocv.io/x/gocv

※あらかじめgitをインストールしていることが必要です。

サンプルプログラムの導入と実行

git clone https://github.com/hybridgroup/gocv
cd gocv
go run ./cmd/version/main.go

以下のようなgocvとopencvのバージョンが出たらOKです。

gocv version: 0.29.0
opencv lib version: 4.5.1

helloが走らなかった件

cmd配下にはほかにもいくつかありまして、例によって例のごとく「hello」という名前のパッケージもあったので、VirtualBoxで走らせているUbuntu 18.04の端末から立ち上げたのですが上手く立ち上がりませんでした。

ここからはGoCVというよりVirtualBoxのTIPSみたいな感じになりますが、結論から申しますと、helloはカメラを必要としていてVirtualBoxのホストイメージにカメラを認識する必要があり、以下の方法で解決しました。

Extension Packの導入

まずはExtension Packを導入します。[3]
下記がダウンロードページとなります。
Download VirtualBox
ここからお使いのVirtualBoxのバージョンに合うExtension Packをダウンロードしてインストールしてください。

デバイスの追加

設定はゲストOSを起動した状態でコマンドプロンプトを開け、Webカメラの追加設定をホストOS側のVBoxManagerを用いて行います。

ゲストOSが走っている状態で以下を実行します。

まずは VBoxManage.exe が居るディレクトリに移動。[4]

C:\Users\UserName>cd "\Program Files\Oracle\VirtualBox"
C:\Program Files\Oracle\VirtualBox>

実行中の仮想環境を表示。

C:\Program Files\Oracle\VirtualBox> VBoxManage.exe list runningvms
"Guest Name" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}

接続中のカメラを表示

C:\Program Files\Oracle\VirtualBox> VBoxManage.exe list webcams
Video Input Devices: 1
.1 "Certain WebCam"
\\Camera Path

上記のカメラ「.1」をアタッチ。

C:\Program Files\Oracle\VirtualBox> VboxManage controlvm "Guest Name" webcam attach .1

以下のページを参考にしました。
VirtualBox上の仮想OSでWebカメラを使えるようにする

これでカメラが使え、helloパッケージ上の main.go を動作出来ました。
筆者近影
筆者近影

脚注
  1. VirtualBox+Ubuntu 18.04自体は3年ほど前から入れていてゲストOSを更新しないままなのはここだけの話。 ↩︎

  2. 参考にしたサイトはメモリ2GB、vCPU 2の仮想環境で40分程度という話だったのに、メモリ8GB、デュアルCPUなのに2時間ほど走らせても終わらなかったので「?」と思ってたらVirtualBoxのCPU数が「1」のままでした、という失敗談も添えておきます。 ↩︎

  3. 商用利用不可ですのでご注意を。 ↩︎

  4. VBoxManage.exeを実行するごとにフルパスを入れてもいいのですが、まぁ面倒なんで。 ↩︎

Discussion