mirror of
https://github.com/kerberos-io/agent.git
synced 2025-10-05 08:06:57 +08:00
Resize polygon coordinates based on IPCamera BaseWidth and BaseHeight configuration
This commit is contained in:
@@ -63,16 +63,34 @@ func ProcessMotion(motionCursor *packets.QueueCursor, configuration *models.Conf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A user might have set the base width and height for the IPCamera.
|
||||||
|
// This means also the polygon coordinates are set to a specific width and height (which might be different than the actual packets
|
||||||
|
// received from the IPCamera). So we will resize the polygon coordinates to the base width and height.
|
||||||
|
baseWidthRatio := 1.0
|
||||||
|
baseHeightRatio := 1.0
|
||||||
|
baseWidth := config.Capture.IPCamera.BaseWidth
|
||||||
|
baseHeight := config.Capture.IPCamera.BaseHeight
|
||||||
|
if baseWidth > 0 && baseHeight > 0 {
|
||||||
|
// We'll get the first image to calculate the ratio
|
||||||
|
img := imageArray[0]
|
||||||
|
if img != nil {
|
||||||
|
bounds := img.Bounds()
|
||||||
|
rows := bounds.Dy()
|
||||||
|
cols := bounds.Dx()
|
||||||
|
baseWidthRatio = float64(cols) / float64(baseWidth)
|
||||||
|
baseHeightRatio = float64(rows) / float64(baseHeight)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate mask
|
// Calculate mask
|
||||||
var polyObjects []geo.Polygon
|
var polyObjects []geo.Polygon
|
||||||
|
|
||||||
if config.Region != nil {
|
if config.Region != nil {
|
||||||
for _, polygon := range config.Region.Polygon {
|
for _, polygon := range config.Region.Polygon {
|
||||||
coords := polygon.Coordinates
|
coords := polygon.Coordinates
|
||||||
poly := geo.Polygon{}
|
poly := geo.Polygon{}
|
||||||
for _, c := range coords {
|
for _, c := range coords {
|
||||||
x := c.X
|
x := c.X * baseWidthRatio
|
||||||
y := c.Y
|
y := c.Y * baseHeightRatio
|
||||||
p := geo.NewPoint(x, y)
|
p := geo.NewPoint(x, y)
|
||||||
if !poly.Contains(p) {
|
if !poly.Contains(p) {
|
||||||
poly.Add(p)
|
poly.Add(p)
|
||||||
|
Reference in New Issue
Block a user