日本語ができない
時間は気にしないでwww
前のソースを一部回収
package main import ( "gocv.io/x/gocv" "log" "os/user" "time" "io/ioutil" "image/color" "image" ) var ( // サイズ w = 640 h = 480 // 色定義 black = color.RGBA{0, 0, 0, 0} blue = color.RGBA{0, 0, 255, 0} red = color.RGBA{255, 0, 0, 0} white = color.RGBA{255, 255, 255, 0} yellow = color.RGBA{255, 255, 0, 0} color2 = color.RGBA{128,128,128,0} ) func main() { // ユーザディレクトリ取得して保存先を作成 user, err := user.Current() if err != nil { log.Println(err) return } // img読み込み img_file_path := user.HomeDir + "/Desktop/" + "pug3_pic1.jpg" // file b, err := ioutil.ReadFile(img_file_path) if err != nil { log.Println(err) return } // 画像取得 atom, err := gocv.IMDecode(b, gocv.IMReadUnchanged) if err != nil { log.Println(err) return } defer atom.Close() // sample1描画 sample1(&atom) // 領域作成 img2 := gocv.NewMatWithSize(atom.Rows(), atom.Cols(), atom.Type()) // 短径(線) gocv.Rectangle(&img2, image.Rect(400, 20, 900, 400), blue, 3) // 短径(塗りつぶし) gocv.Rectangle(&img2, image.Rect(400, 20, 900, 400), color2, -1) // 重ねる gocv.AddWeighted(atom, 1, img2, 0.5, 0, &atom) // 文字列を出力 timeStr := time.Now().Format("2006/01/02 15:04:05") gocv.PutText(&atom, timeStr, image.Pt(20, atom.Rows() - 40), gocv.FontHersheyComplex, 1, black, 1) // 出力画像パス file_path := user.HomeDir + "/Desktop/" + time.Now().Format("20060102150405") + ".jpg" // 保存 gocv.IMWrite(file_path, atom) } func sample1 (img *gocv.Mat) { // 短径描画 gocv.Rectangle(img,image.Rect(10, 10, 100, 100), black, 5) gocv.Rectangle(img,image.Rect(200, 15, 300, 350), blue, 5) gocv.Rectangle(img,image.Rect(10, 400, 600, 470), yellow, -1) // -1の場合は塗りつぶし gocv.Rectangle(img,image.Rect(40, 350, 550, 450), red, -1) // -1の場合は塗りつぶし // 多角形描画 ps := make([][]image.Point, 1) p := make([]image.Point, 4) p[0] = image.Pt(int(0.1*float64(w)), int(0.1*float64(h))) p[1] = image.Pt(int(0.1*float64(w)), int(0.4*float64(h))) p[2] = image.Pt(int(0.3*float64(w)), int(0.2*float64(h))) p[3] = image.Pt(int(0.3*float64(w)), int(0.1*float64(h))) ps[0] = p gocv.DrawContours(img, ps, 0, red, -1) // -1の場合は塗りつぶし }
使うようになったもの
gocv.IMDecode
→ バイナリを読み込んで変換してくれる
gocv.AddWeighted
→ 既存の短径領域に別の短径領域を重ねる
gocv.PutText
→ 指定の場所にテキストを追加
所感
IDEってやっぱり良いです\(^o^)/
viなどでもなんかできそうですけど、commandキーや入力している間に引数やメソッドの候補がでるのは嬉しい