OpenCV & Goを用いた画像重畳
前回はpythonでOpenCVにて画像や動画の重畳方法をまとめました。
elsammit-beginnerblg.hatenablog.com
今回は報告の通り、Go言語での画像重畳方法についてまとめたいと思います!!
■Go言語での画像読み取り
画像の読み取りに限った話ではないですが、基本的な関数はPythonとほぼ同じです!!
Go言語での画像読み取りはこちらです。
package main import ("gocv.io/x/gocv") func main() { imgA := gocv.IMRead("./lenalena.jpg", -1) }
IMReadですが、
func IMRead(name string, flags IMReadFlag) Mat
で定義されております。
IMReadFlagですが、こちらの通り定義されております。
■Go言語での画像書き込み
画像書き込み処理はこちらの通りです。
ちょっと書き込むだけでは、、、だったので。
グレーイメージに変換してから画像ファイルとして書き込むようにしました。
package main import ("gocv.io/x/gocv") func main() { imgA := gocv.IMRead("画像ファイル", -1) img_gray := gocv.NewMat() gocv.CvtColor(imgA, &img_gray, 6) gocv.IMWrite("./grayImg.jpg", img_gray) }
画像書き込みは、
func IMWrite(name string, img Mat) bool
で可能になります。
第1引数に書き込みファイル名、第2引数が書き込みたい画像イメージとなります。
グレー画像変換は、
func CvtColor(src Mat, dst *Mat, code ColorConversionCode)
を用いて、ColorConversionCodeをグレーイメージに変換するように指定すればOKです。
ColorConversionCodeの設定リストはこちらで確認可能です。
https://godoc.org/gocv.io/x/gocv#ColorConversionCode
■画像重畳
では、本題の画像重畳です!!
画像の重畳ですが、
func AddWeighted(src1 Mat, alpha float64, src2 Mat, beta float64, gamma float64, dst *Mat)
を用います。
pythonとほとんど同じですね。
異なっているのは、重畳後の画像も引数として渡す必要があるところのみです。
実際に画像重畳させるためのコード例はこちらになります。
package main import ("gocv.io/x/gocv") func main() { imgA := gocv.IMRead("画像ファイル1", -1) imgB := gocv.IMRead("画像ファイル2", -1) img_gray := gocv.NewMat() img_Add := gocv.NewMat() gocv.CvtColor(imgA, &img_gray, 6) gocv.AddWeighted(imgA, 0.5, imgB, 0.5, 1.0, &img_Add) gocv.IMWrite("./GrayImg.jpg", img_gray) gocv.IMWrite("./ImgAdd.jpg", img_Add) }
■重畳結果
Go言語で重畳した結果も合わせて載せておきます。
重畳させる画像はそれぞれ、<画像ファイル1>
<画像ファイル2>
を用いました。
重畳させた結果はこちらになります。
■最後に
pythonに引き続き、Go言語での重畳方法についてまとめてみました。
Go言語でも動画の重畳を実施してみようかと思ったのですが、ちょっと苦戦中。。。
こちらは現在確認中ですので、分かりましたら載せていこうと思います!!