opencv: OpenCV face detector that is much more concurrent
Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
parent
2929791ff7
commit
a998b0b072
|
@ -7,12 +7,16 @@ package main
|
|||
import (
|
||||
"path"
|
||||
"runtime"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/hybridgroup/gocv"
|
||||
"gobot.io/x/gobot"
|
||||
"gobot.io/x/gobot/platforms/opencv"
|
||||
)
|
||||
|
||||
var img atomic.Value
|
||||
|
||||
func main() {
|
||||
_, currentfile, _, _ := runtime.Caller(0)
|
||||
cascade := path.Join(path.Dir(currentfile), "haarcascade_frontalface_alt.xml")
|
||||
|
@ -21,8 +25,19 @@ func main() {
|
|||
camera := opencv.NewCameraDriver(1)
|
||||
|
||||
work := func() {
|
||||
mat := gocv.NewMat()
|
||||
img.Store(mat)
|
||||
|
||||
camera.On(opencv.Frame, func(data interface{}) {
|
||||
i := data.(gocv.Mat)
|
||||
img.Store(i)
|
||||
})
|
||||
|
||||
gobot.Every(10*time.Millisecond, func() {
|
||||
i := img.Load().(gocv.Mat)
|
||||
if i.Empty() {
|
||||
return
|
||||
}
|
||||
faces := opencv.DetectFaces(cascade, i)
|
||||
opencv.DrawRectangles(i, faces, 0, 255, 0, 5)
|
||||
window.ShowImage(i)
|
||||
|
|
Loading…
Reference in New Issue