2024-11-01 12:54:20 +01:00
|
|
|
//go:build gocv
|
|
|
|
// +build gocv
|
|
|
|
|
2014-04-27 16:58:34 -07:00
|
|
|
package opencv
|
2014-04-26 03:11:51 -07:00
|
|
|
|
|
|
|
import (
|
2017-10-05 17:05:10 +02:00
|
|
|
"image"
|
|
|
|
"image/color"
|
|
|
|
|
2017-10-18 18:13:40 +02:00
|
|
|
"gocv.io/x/gocv"
|
2014-04-26 03:11:51 -07:00
|
|
|
)
|
|
|
|
|
2017-10-05 17:05:10 +02:00
|
|
|
var classifier *gocv.CascadeClassifier
|
|
|
|
|
2014-10-20 11:23:33 -05:00
|
|
|
// loadHaarClassifierCascade returns open cv HaarCascade loaded
|
2017-10-05 17:05:10 +02:00
|
|
|
func loadCascadeClassifier(haar string) *gocv.CascadeClassifier {
|
|
|
|
if classifier != nil {
|
|
|
|
return classifier
|
|
|
|
}
|
|
|
|
|
|
|
|
c := gocv.NewCascadeClassifier()
|
|
|
|
c.Load(haar)
|
|
|
|
classifier = &c
|
|
|
|
return classifier
|
2014-04-26 03:11:51 -07:00
|
|
|
}
|
|
|
|
|
2017-10-23 11:45:36 +02:00
|
|
|
// DetectObjects loads Haar cascade to detect face objects in image
|
|
|
|
func DetectObjects(haar string, img gocv.Mat) []image.Rectangle {
|
2017-10-05 17:05:10 +02:00
|
|
|
return loadCascadeClassifier(haar).DetectMultiScale(img)
|
2014-04-26 03:11:51 -07:00
|
|
|
}
|
|
|
|
|
2014-10-20 11:23:33 -05:00
|
|
|
// DrawRectangles uses Rect array values to return image with rectangles drawn.
|
2017-10-05 17:05:10 +02:00
|
|
|
func DrawRectangles(img gocv.Mat, rects []image.Rectangle, r int, g int, b int, thickness int) {
|
|
|
|
for _, rect := range rects {
|
2018-04-24 12:56:26 +02:00
|
|
|
gocv.Rectangle(&img, rect, color.RGBA{uint8(r), uint8(g), uint8(b), 0}, thickness)
|
2014-04-26 03:11:51 -07:00
|
|
|
}
|
2017-10-05 17:05:10 +02:00
|
|
|
return
|
2014-04-26 03:11:51 -07:00
|
|
|
}
|