ssa

Форк
0
/
pigo.go 
74 строки · 1.8 Кб
1
package goroi
2

3
import (
4
	"fmt"
5
	"log"
6
	"os"
7

8
	pigo "github.com/esimov/pigo/core"
9
)
10

11
type Pigs struct {
12
	Classifier *pigo.Pigo
13
}
14

15
func NewPigs(FileCascade string) (*Pigs, error) {
16
	// consumers.StartForwardStreamConsumer()
17
	// camtron.StartCam()
18
	cascadeFile, err := os.ReadFile(FileCascade) // "cascade/facefinder"
19
	if err != nil {
20
		return nil, fmt.Errorf("os.ReadFile: Error reading the cascade file: %v", err)
21
	}
22

23
	pigo := pigo.NewPigo()
24
	// Unpack the binary file. This will return the number of cascade trees,
25
	// the tree depth, the threshold and the prediction from tree's leaf nodes.
26
	classifier, err := pigo.Unpack(cascadeFile)
27
	if err != nil {
28
		return nil, fmt.Errorf("pigo.Unpack: Error reading the cascade file: %v", err)
29
	}
30

31
	return &Pigs{
32
		Classifier: classifier,
33
	}, nil
34
}
35

36
func (p Pigs) getCoords(filepath string) []pigo.Detection {
37

38
	src, err := pigo.GetImage(filepath)
39
	if err != nil {
40
		log.Fatalf("Cannot open the image file: %v", err)
41
	}
42

43
	pixels := pigo.RgbToGrayscale(src)
44
	cols, rows := src.Bounds().Max.X, src.Bounds().Max.Y
45

46
	cParams := pigo.CascadeParams{
47
		MinSize:     20,
48
		MaxSize:     1000,
49
		ShiftFactor: 0.1,
50
		ScaleFactor: 1.1,
51

52
		ImageParams: pigo.ImageParams{
53
			Pixels: pixels,
54
			Rows:   rows,
55
			Cols:   cols,
56
			Dim:    cols,
57
		},
58
	}
59

60
	angle := 0.0 // cascade rotation angle. 0.0 is 0 radians and 1.0 is 2*pi radians
61

62
	// Run the classifier over the obtained leaf nodes and return the detection results.
63
	// The result contains quadruplets representing the row, column, scale and detection score.
64
	dets := p.Classifier.RunCascade(cParams, angle)
65
	// fmt.Printf("%+v\n", dets)
66

67
	// Calculate the intersection over union (IoU) of two clusters.
68
	dets = p.Classifier.ClusterDetections(dets, 0.1)
69

70
	// fmt.Printf("%+v\n", dets)
71
	// fmt.Println()
72

73
	return dets
74
}
75

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.