4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GOCVの環境構築とサンプル一部紹介

Posted at

はじめに

goで画像処理してみたいと思ってネットサーフィンしていたらGOCVなるものをみつけたので

環境構築とサンプルコードの紹介をします。

環境

  • windows10
  • go version go1.12.6 windows/amd64

パッケージダウンロード

PS C:\Users\Hoge> go get -u -d gocv.io/x/gocv

MinGW-64 のインストール

  • MInGW-W64って?
    64bit windowsOSでCやC++をコンパイルできるようにするツールらしい(曖昧です)

  • 以下ページを参考にインストールしました

cmakeのインストール

[Download] から cmake-3.17.0-rc1-win64-x64.msi を選択してダウンロード & インストール

環境変数の設定

自分がどのディレクトリにいても、hoge.exeを実行できるようにwindows側に.exeファイルが存在するPath(環境)を登録しておきましょう。

環境変数の設定は次のような順番で行えます

  1. [スタート] - [設定] - [設定の検索]で環境変数を編集で検索
    setting.png

  2. Path変数を選択して、編集をクリック

  3. Pathに C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\binC:\Program Files\CMake\bin を追加してOKを選択する
    ※ インストールしたバージョンとインストールしたフォルダ名で上記の名前と違うことがあります。

opencvの環境構築

%GOPATH%\gocv.io\x\gocvwin_build_opencv.cmd が存在するのでダブルクリックで実行しましょう

opencvのビルドが始まります

ビルド完了後、C:\opencv\build フォルダが作られているはずなので、

C:\opencv\build\install\x64\mingw\bin を再度環境変数のPathに登録しましょう。

sample code

環境構築が完了したら、readme.mdの説明を見ながらいくつか動かしてみるといいでしょう。

readmeやソースコード内にusageがまとめられてるのもgoodですね。

C:\Users\hoge\go\src\gocv.io\x\gocv\cmd\readme.md

何個か試してみて面白かったものを紹介します。

hello sample

カメラデバイスにアクセスして、映像を垂れ流しするサンプル

サンプルのためカメラデバイスは0番目で決め打ちされているし、key入力受付してexitもないのには注意

// gocv.io\x\gocv\cmd\hello\main.go

// +build example
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)
	}
}

windowにカメラ映像が表示されていればOKです

hello.png

motion-detect

IntelのOpenVinoを使って物体認識をしているサンプルだと思います。

ある程度分類はできているようなので、返り値の値を上手く使って表示を工夫できれば面白そうですね。

どのカメラに接続するか引数で渡す必要があります。

go run gocv.io\x\gocv\cmd\motion-detect\main.go 0

motion_detect.png

facedetect

カスケード分類器を使った顔認識サンプルですが、あまり精度が良くない印象です。
第一引数にカメラ、第二引数にカスケード分類器のxmlが必要で、xmlはdataフォルダにあらかじめ準備されているので、それを使いましょう。

go run gocv.io\x\gocv\cmd\facedetect\main.go 0 gocv.io\x\gocv\data\haarcascade_frontalface_default.xml

faceblur

facedetectの発展形で顔認識した空間にblur処理(ぼかし)を行うサンプルです。

gocv.io\x\gocv\cmd\faceblur\main.go 0 gocv.io\x\gocv\data\haarcascade_frontalface_default.xml
  • blur結果
    アニメキャラクターの顔も認識してますね。

face_blur.png

face_detect_url

facedetectの発展形で引数に与えたurlから取得した画像を対象に顔検出して、画像として保存します。

今回は画像処理で有名なレナさんの画像をwikipediaから取得して顔検出してみます。

go run gocv.io\x\gocv\cmd\faceblur\main.go https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png gocv.io\x\gocv\data\haarcascade_frontalface_default.xml output.png
  • 結果

output.png

まとめ

goで何か作りたいなと思ってた時に、CVのライブラリを見つけたので導入方法をまとめてみました。

暇があればgoでクローラーとかも作ってみたいです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?