Raspberry Pi上にGo言語によるOpenCV開発環境を構築します。Go言語でOpenCVのアプリを開発するにはGoCVを使用します。「Raspberry Pi 3へカメラモジュールの接続」で使用したカメラモジュールをRaspberry Piに接続し、Go言語により動画を撮影します。

OpenCVのインストール

次のコマンドでシェルスクリプトを取得します。

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

次のシェルスクリプトを実行してOpenCVをインストールします。

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

GoCVインストール

次のコマンドでGoCVをインストールします。

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

次のコマンドでpgkconfigにopencvのパスを通します。

$ export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"

「/usr/local/lib/pkgconfig」配下に次の内容を持つ「opencv4.pc」を作成します。

/usr/local/lib/pkgconfig/opencv4.pc

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv4
Description: The opencv library
Version: 4.0.0
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_img_hash -lopencv_imgcodecs -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_video -lopencv_videoio -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto

次のコマンドでgocvをインストールします。

$ cd $GOPATH/src/gocv.io/x/gocv
$ make install

gocvのパスを調べるために次のコマンドを実行します。

$ sudo find / -name "gocv"

インストール完了すると次のようにバージョンが表示されます。

・・・・
-- Installing: /usr/local/bin/opencv_model_diagnostics
-- Set runtime path of "/usr/local/bin/opencv_model_diagnostics" to "/usr/local/lib"
/home/pi/go/src/gocv.io/x/gocv
go clean --cache
rm -rf /tmp/opencv
go run ./cmd/version/main.go
gocv version: 0.27.0
opencv lib version: 4.5.2

Raspberry Pi 3のカメラモジュールによる動画撮影

構築したOpenCV開発環境の確認のために、「hybridgroup/gocv」のサンプルコード「hello.go」を使ってRaspberry Pi 3のカメラモジュールで動画を撮影します。Python言語を使った静止画の撮影については「PicameraによるRaspberry Pi 3カメラモジュールのカメラ設定」に示します。

Raspberry Pi 3とカメラモジュールを次のように接続します。

サンプルコード「Hello, video」を次に示します。

hello.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)
	}
}

次の動画が表示されます。なお、動画は上下逆になります。