From 033205d5e77e266e253f19f914bed5bcdcbf9358 Mon Sep 17 00:00:00 2001 From: Skip Tavakkolian Date: Thu, 7 Jan 2016 10:59:43 -0800 Subject: [PATCH] Added a sample for face detection on video from builtin camera --- samples/webcam_facedetect.go | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 samples/webcam_facedetect.go diff --git a/samples/webcam_facedetect.go b/samples/webcam_facedetect.go new file mode 100644 index 0000000..4de7ee2 --- /dev/null +++ b/samples/webcam_facedetect.go @@ -0,0 +1,54 @@ +package main + +import ( + "fmt" + "os" + "path" + + "github.com/lazywei/go-opencv/opencv" +) + +func main() { + win := opencv.NewWindow("Go-OpenCV Webcam Face Detection") + defer win.Destroy() + + cap := opencv.NewCameraCapture(0) + if cap == nil { + panic("cannot open camera") + } + defer cap.Release() + + cwd, err := os.Getwd() + if err != nil { + panic(err) + } + cascade := opencv.LoadHaarClassifierCascade(path.Join(cwd, "haarcascade_frontalface_alt.xml")) + + fmt.Println("Press ESC to quit") + for { + if cap.GrabFrame() { + img := cap.RetrieveFrame(1) + if img != nil { + faces := cascade.DetectObjects(img) + for _, value := range faces { + opencv.Circle(img, + opencv.Point{ + value.X() + (value.Width() / 2), + value.Y() + (value.Height() / 2), + }, + value.Width()/2, + opencv.ScalarAll(255.0), 1, 1, 0) + } + + win.ShowImage(img) + } else { + fmt.Println("nil image") + } + } + key := opencv.WaitKey(1) + + if key == 27 { + os.Exit(0) + } + } +}