😊
[環境構築]VirtualBox上+Linux22.04+Go(1.21)の環境にGoCV(go言語のOpenCV)をインストールする。
Abstract
タイトル通りなんだけど、なるだけ簡素に。
前提
- VirtualBoxはインストールしておく。 VirtualBoxインストール
- VirtualBoxにLinux22.04をインストールしておく。VirtualBox上でUbuntu22.04を構築
- VirtualBox+Linux22.04にVSCodeをインストールしておく。VSCodeをインストール
- 日本語化もしとく。VSCodeを日本語化
- goもインストールしておく。Ubuntu22.04上に、VSCode+Go(1.21)+Webアプリの環境をつくる。
- Webカメラの設定もしておく。VirtualBox上のLinux22.04でカメラを使う。
手順
必要なパッケージのインストール
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