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  }