GOCVを使ってみた


こんにちはwattak777です。

色々と機会があり、お勉強のためGo言語によるOpenCV「gocv」を入れるところまでをまとめました。

環境
- ホストOS:Windows 10
- VirtualBox:6.0.22
- ゲスト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

ファイルを編集

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

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

 上記のバージョンとCONTRIBを適宜修正。

インストール実行

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

$\tiny{メモリ8GBで2時間ほど走らせても終わらなかったので「?」と思ってたらVirtualBoxのCPU数が「1」のままでした、という失敗談も添えておきます。}$

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.23.0
opencv lib version: 4.1.0

helloが走らなかった件

 cmd配下にはいろいろとサンプルがありまして「hello」もあるので走らせようと思ったら、どうやらカメラを映して表示させるプログラムだったようで、VirtualBox上でUbuntu 18.04を動かしたのですがカメラが反応せずでした。

 そこで、以下の方法で実現し、helloも実行できました。

Extension Packの導入

下記がダウンロードページとなります。
Download VirtualBox
※自分の場合はさらにそこから古いバージョンのダウンロードページに行く必要がありましたが…。

デバイスの追加

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

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カメラを使えるようにする

これでゲストOS上でgo runをかけるとカメラに映った画像が表示されました。