😊

[環境構築]VirtualBox上+Linux22.04+Go(1.21)の環境にGoCV(go言語のOpenCV)をインストールする。

2023/11/30に公開

Abstract

タイトル通りなんだけど、なるだけ簡素に。

前提

手順

必要なパッケージのインストール

gitインストール

gitインストール
$ sudo apt install -y git

gocvをインストール

"go install gocv.io/x/gocv@latest" すればいいよって情報が出てくるんだけど、下記エラーでさっぱりできず。orz
"package gocv.io/x/gocv is not a main package"。
なので、git hubからビルドする方法でインストールした。

gocvをインストール
$ cd ~/go
$ git clone https://github.com/hybridgroup/gocv.git
$ cd gocv
$ make install

下記が表示されたら、インストール完了。

gocv version: 0.35.0
opencv lib version: 4.8.1

どこにインストールされたかを確認する。

$ sudo find / -name gocv
/home/user/go/gocv

Windows側でWebカメラをVirtualBoxに関連付ける。

カメラ確認

Windowsコマンドプロンプト
$ cd "C:\Program Files\Oracle\VirtualBox\"
$ VBoxManage list webcams

Video Input Devices: 1
.1 "HD Web Camera"
\\?\usb#vid_05a3&pid_9331&mi_00#7&7c239da&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global

VM確認

Windowsコマンドプロンプト
$ VBoxManage list runningvms

"Ubt22_VSCode_Go_CV_Webapp" {65d29d81-aa33-49dc-919e-38a16b8a4966}

VMとカメラを関連付ける。

Windowsコマンドプロンプト
$ VboxManage controlvm "Ubt22_VSCode_Go_CV_Webapp" webcam attach .1

サンプルコードを動かす。

サンプルコード作成
$ cd ~/ && mkdir test-gocv && cd test-gocv
$ go mod init test-gocv
go: creating new go.mod: module test-gocv
$ vi gocvtest.go
gocvtest.goの中身
package main

import (
	"gocv.io/x/gocv"
)

func main() {
	webcam, _ := gocv.OpenVideoCapture(0)
	window := gocv.NewWindow("Hello")
	img := gocv.NewMat()

	for {
		webcam.Read(&img)
		window.IMShow(img)
		window.WaitKey(1)
	}
}
モジュール管理をうまい具合にする。
$ go mod tidy 
うまい具合になったか確認
$ cat go.mod 
module test-gocv

go 1.21.4

require gocv.io/x/gocv v0.35.0
↑うまい具合に、"gocv.io/x/gocv"が設定された。
実行
go run gocvtest.go

出来た!!

Discussion