goreco

package module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2021 License: MIT Imports: 8 Imported by: 0

README

goreco

OpenCV-DNN wrapper written in GO for using in Unspot.

Dependencies

Supported platforms

  • Linux
  • OS X

Getting started

How to use

go get "github.com/umbrella-evgeny-nefedkin/goreco"
package main

import (
	"github.com/umbrella-evgeny-nefedkin/goreco"
        "gocv.io/x/gocv"
)

func processFrame(img gocv.Mat) []Box{
    // Create pre-config
	Config := goreco.DefaultSSDConfig

    // Set model path
	Config.ModelPath = "model/ssd_mobile/frozen_inference_graph.pb"
	Config.ConfigPath = "model/ssd_mobile/ssd.pbtxt"

    // Create detector
    Detector := goreco.NewDetector(Config)

    // Call detection
    result := Detector.Detect(img, 0.6)

    // Mark detected regions on original frame
    goreco.MarkObjects(&img, boxes, true)

    return result
}

Documentation

Index

Constants

View Source
const (
	TypeRecDataBytes = iota
	TypeRecDataJpeg
)

Variables

View Source
var DefaultEfConfig = &Config{
	NetTypeEf,
	"",
	"",
	image.Pt(512, 512),
	1.0 / 127.5,
	gocv.NewScalar(127.5, 127.5, 127.5, 0),
	true,
	gocv.NetBackendDefault,
	gocv.NetTargetCPU,
}
View Source
var DefaultSSDConfig = &Config{
	NetTypeSSD,
	"",
	"",
	image.Pt(300, 300),
	1.0 / 127.5,
	gocv.NewScalar(127.5, 127.5, 127.5, 0),
	true,
	gocv.NetBackendDefault,
	gocv.NetTargetCPU,
}
View Source
var DefaultYOLO3Config = &Config{
	NetTypeYOLO3,
	"",
	"",
	image.Pt(320, 320),
	1.0 / 255.0,
	gocv.NewScalar(255.0, 255.0, 255.0, 0),
	true,
	gocv.NetBackendDefault,
	gocv.NetTargetCPU,
}
View Source
var DefaultYOLO4Config = &Config{
	NetTypeYOLO3,
	"",
	"",
	image.Pt(608, 608),
	1.0 / 255.0,
	gocv.NewScalar(255.0, 255.0, 255.0, 0),
	true,
	gocv.NetBackendDefault,
	gocv.NetTargetCPU,
}
View Source
var JpegHead = []byte{0xff, 0xd8}
View Source
var JpegTail = []byte{0xFF, 0xD9}

Functions

func CheckJpegHeader

func CheckJpegHeader(data []byte) bool

func FindMaxFloat32

func FindMaxFloat32(floats []float32) (max float32, idx int)

func MarkObjects

func MarkObjects(img *gocv.Mat, boxes []Box, putText bool)

Types

type Box

type Box struct {
	// contains filtered or unexported fields
}

type Config

type Config struct {
	Type       NetType
	ModelPath  string
	ConfigPath string
	Resize     image.Point
	Scale      float64
	Mean       gocv.Scalar
	SwapRB     bool
	Backend    gocv.NetBackendType
	Target     gocv.NetTargetType
}

type Detector

type Detector interface {
	Prepare(img gocv.Mat) (processed *gocv.Mat)
	Detect(img gocv.Mat, threshold float32, all bool) []Box
	DetectBlob(blob gocv.Mat, threshold float32, all bool) []Box
}

func NewDetector

func NewDetector(conf *Config) Detector

type Jpeg

type Jpeg []byte

type NetType

type NetType int
const (
	NetTypeSSD NetType = iota
	NetTypeYOLO3
	NetTypeYOLO4
	NetTypeYOLO5
	NetTypeEf
)

type Processor

type Processor interface {
	Process(detectionResult gocv.Mat, threshold float32, all bool) []Box
}

func NewProcessorSSD

func NewProcessorSSD() Processor

func NewProcessorYOLO

func NewProcessorYOLO() Processor

type RecData

type RecData interface {
	GetType() RecDataType
	GetData() []byte
}

func NewRecBytesData

func NewRecBytesData(data []byte, cols, rows int, mt gocv.MatType) RecData

func NewRecBytesJpeg

func NewRecBytesJpeg(data []byte) RecData

type RecDataBytes

type RecDataBytes interface {
	RecData
	Cols() int
	Raws() int
	Mt() gocv.MatType
}

type RecDataJ

type RecDataJ struct {
}

type RecDataJpeg

type RecDataJpeg interface {
	RecData
}

type RecDataType

type RecDataType int

type SafeCounter added in v0.4.0

type SafeCounter struct {
	// contains filtered or unexported fields
}

func (*SafeCounter) Dec added in v0.4.0

func (c *SafeCounter) Dec()

func (*SafeCounter) Get added in v0.4.0

func (c *SafeCounter) Get() int

func (*SafeCounter) Inc added in v0.4.0

func (c *SafeCounter) Inc()

type Stack added in v0.3.0

type Stack interface {
	Push(int)
	Size() uint
	SizeCur() uint
	Mean() uint
	Sum() int
	Avg() float64
	AvgNoZero() int
	Max() int
}

func NewStack added in v0.3.0

func NewStack(size uint) Stack

NewResultDamper

  • size - stack size

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL