func main() { filename := "../testdata/lena.jpg" if len(os.Args) == 2 { filename = os.Args[1] } image := opencv.LoadImage(filename) if image == nil { log.Fatalf("LoadImage %s failed!", filename) } defer image.Release() win := opencv.NewWindow("Go-OpenCV") defer win.Destroy() win.SetMouseCallback(func(event, x, y, flags int) { fmt.Printf("event = %d, x = %d, y = %d, flags = %d\n", event, x, y, flags, ) }) win.CreateTrackbar("Thresh", 1, 100, func(pos int) { fmt.Printf("pos = %d\n", pos) }) win.ShowImage(image) opencv.WaitKey(0) }
func main() { flag.Parse() cameras := make([]*opencv.Capture, *flagCamNum) for i := 0; i < len(cameras); i++ { cameras[i] = opencv.NewCameraCapture(i) if cameras[i] == nil { log.Fatalf("can not open camera %d", i) } defer cameras[i].Release() } writers := make([]*opencv.VideoWriter, *flagCamNum) for i := 0; i < len(writers); i++ { m := cameras[i].QueryFrame() writers[i] = opencv.NewVideoWriter( fmt.Sprintf("cam%d_output.avi", i), opencv.FOURCC('M', 'J', 'P', 'G'), 30, m.GetWidth(), m.GetHeight(), 1, ) if writers[i] == nil { log.Fatalf("can not create writer %d", i) } defer writers[i].Release() } windows := make([]*opencv.Window, *flagCamNum) for i := 0; i < len(windows); i++ { windows[i] = opencv.NewWindow(fmt.Sprintf("Camera: %d", i)) defer windows[i].Destroy() } for i := 0; ; i++ { for idx := 0; idx < *flagCamNum; idx++ { if m := cameras[idx].QueryFrame(); m != nil { fmt.Printf("camera(%d): Frame %d\n", idx, i) windows[idx].ShowImage(m) writers[idx].WriteFrame(m) } } if key := opencv.WaitKey(30); key == 27 { break } } fmt.Println("Done") }
func main() { filename := "../testdata/fruits.jpg" if len(os.Args) == 2 { filename = os.Args[1] } img0 := opencv.LoadImage(filename) if img0 == nil { log.Fatalf("LoadImage %s failed!", filename) } defer img0.Release() fmt.Print("Hot keys: \n", "\tESC - quit the program\n", "\tr - restore the original image\n", "\ti or ENTER - run inpainting algorithm\n", "\t\t(before running it, paint something on the image)\n", ) img := img0.Clone() inpainted := img0.Clone() inpaint_mask := opencv.CreateImage(img0.GetWidth(), img0.GetHeight(), 8, 1) opencv.Zero(inpaint_mask) //opencv.Zero( inpainted ) win := opencv.NewWindow("image") defer win.Destroy() prev_pt := opencv.Point{-1, -1} win.SetMouseCallback(func(event, x, y, flags int, param ...interface{}) { if img == nil { os.Exit(0) } if event == opencv.CV_EVENT_LBUTTONUP || (flags&opencv.CV_EVENT_FLAG_LBUTTON) == 0 { prev_pt = opencv.Point{-1, -1} } else if event == opencv.CV_EVENT_LBUTTONDOWN { prev_pt = opencv.Point{x, y} } else if event == opencv.CV_EVENT_MOUSEMOVE && (flags&opencv.CV_EVENT_FLAG_LBUTTON) != 0 { pt := opencv.Point{x, y} if prev_pt.X < 0 { prev_pt = pt } rgb := opencv.ScalarAll(255.0) opencv.Line(inpaint_mask, prev_pt, pt, rgb, 5, 8, 0) opencv.Line(img, prev_pt, pt, rgb, 5, 8, 0) prev_pt = pt win.ShowImage(img) } }) win.ShowImage(img) opencv.WaitKey(0) win2 := opencv.NewWindow("inpainted image") defer win2.Destroy() win2.ShowImage(inpainted) for { key := opencv.WaitKey(20) if key == 27 { os.Exit(0) } else if key == 'r' { opencv.Zero(inpaint_mask) opencv.Copy(img0, img, nil) win.ShowImage(img) } else if key == 'i' || key == '\n' { opencv.Inpaint(img, inpaint_mask, inpainted, 3, opencv.CV_INPAINT_TELEA, ) win2.ShowImage(inpainted) } } os.Exit(0) }
func main() { filename := "../testdata/test.avi" if len(os.Args) >= 2 { filename = os.Args[1] } cap := opencv.NewFileCapture(filename) if cap == nil { log.Fatalf("can not open video %s", filename) } defer cap.Release() win := opencv.NewWindow("GoOpenCV: VideoPlayer") defer win.Destroy() fps := int(cap.GetProperty(opencv.CV_CAP_PROP_FPS)) frames := int(cap.GetProperty(opencv.CV_CAP_PROP_FRAME_COUNT)) stop := false win.SetMouseCallback(func(event, x, y, flags int) { if flags&opencv.CV_EVENT_LBUTTONDOWN != 0 { stop = !stop if stop { fmt.Printf("status: stop\n") } else { fmt.Printf("status: palying\n") } } }) win.CreateTrackbar("Seek", 1, frames, func(pos int) { cur_pos := int(cap.GetProperty(opencv.CV_CAP_PROP_POS_FRAMES)) if pos != cur_pos { cap.SetProperty(opencv.CV_CAP_PROP_POS_FRAMES, float64(pos)) fmt.Printf("Seek to %d(%d)\n", pos, frames) } }) for { if !stop { img := cap.QueryFrame() if img == nil { break } frame_pos := int(cap.GetProperty(opencv.CV_CAP_PROP_POS_FRAMES)) if frame_pos >= frames { break } win.SetTrackbarPos("Seek", frame_pos) win.ShowImage(img) if key := opencv.WaitKey(1000 / fps); key == 27 { break } } else { if key := opencv.WaitKey(20); key == 27 { break } } } }
func main() { filename := "../testdata/lena.jpg" if len(os.Args) == 2 { filename = os.Args[1] } image := opencv.LoadImage(filename) if image == nil { log.Fatalf("LoadImage %s failed!", filename) } defer image.Release() w := image.GetWidth() h := image.GetHeight() // Create the output image cedge := opencv.CreateImage(w, h, opencv.IPL_DEPTH_8U, 3) defer cedge.Release() // Convert to grayscale gray := opencv.CreateImage(w, h, opencv.IPL_DEPTH_8U, 1) edge := opencv.CreateImage(w, h, opencv.IPL_DEPTH_8U, 1) defer gray.Release() defer edge.Release() opencv.CvtColor(image, gray, opencv.CV_BGR2GRAY) win := opencv.NewWindow("Edge") defer win.Destroy() win.SetMouseCallback(func(event, x, y, flags int, param ...interface{}) { fmt.Printf("event = %d, x = %d, y = %d, flags = %d\n", event, x, y, flags, ) }) win.CreateTrackbar("Thresh", 1, 100, func(pos int, param ...interface{}) { edge_thresh := pos opencv.Smooth(gray, edge, opencv.CV_BLUR, 3, 3, 0, 0) opencv.Not(gray, edge) // Run the edge detector on grayscale opencv.Canny(gray, edge, float64(edge_thresh), float64(edge_thresh*3), 3) opencv.Zero(cedge) // copy edge points opencv.Copy(image, cedge, edge) win.ShowImage(cedge) fmt.Printf("pos = %d\n", pos) }) win.ShowImage(image) for { key := opencv.WaitKey(20) if key == 27 { os.Exit(0) } } os.Exit(0) }