gobot.io/x/gobot/v2@v2.1.0/platforms/opencv/window_driver.go (about) 1 package opencv 2 3 import ( 4 "gobot.io/x/gobot/v2" 5 "gocv.io/x/gocv" 6 ) 7 8 type window interface { 9 IMShow(gocv.Mat) 10 } 11 12 // WindowDriver is the Gobot Driver for the OpenCV window 13 type WindowDriver struct { 14 name string 15 window window 16 start func(*WindowDriver) 17 } 18 19 // NewWindowDriver creates a new window driver. 20 // It adds an start function to initialize window 21 func NewWindowDriver() *WindowDriver { 22 return &WindowDriver{ 23 name: "Window", 24 start: func(w *WindowDriver) { 25 w.window = gocv.NewWindow(w.Name()) 26 }, 27 } 28 } 29 30 // Name returns the Driver name 31 func (w *WindowDriver) Name() string { return w.name } 32 33 // SetName sets the Driver name 34 func (w *WindowDriver) SetName(n string) { w.name = n } 35 36 // Connection returns the Driver's connection 37 func (w *WindowDriver) Connection() gobot.Connection { return nil } 38 39 // Start starts window thread and driver 40 func (w *WindowDriver) Start() (err error) { 41 w.start(w) 42 return 43 } 44 45 // Halt returns true if camera is halted successfully 46 func (w *WindowDriver) Halt() (err error) { return } 47 48 // ShowImage displays image in window 49 func (w *WindowDriver) ShowImage(img gocv.Mat) { 50 w.window.IMShow(img) 51 } 52 53 // WaitKey gives window a chance to redraw, and checks for keyboard input 54 func (w *WindowDriver) WaitKey(pause int) int { 55 return gocv.WaitKey(pause) 56 }