From 529d6b92821f8de5c89ae204fb2f9f14f3b84e1d Mon Sep 17 00:00:00 2001 From: lijun Date: Sat, 18 Jan 2025 19:29:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=88=86=E7=A6=BB=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E4=BF=AE=E6=94=B9=E8=A7=86=E9=A2=91=E6=B5=81?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 4 ++-- service/tool.go | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 60146be..7c5c143 100644 --- a/main.go +++ b/main.go @@ -77,7 +77,7 @@ func init() { //service.DeviceIsGettingFrame[device.ID] = false service.DeviceRWMap.Store(device.ID, &sync.RWMutex{}) service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat()) - service.DeviceFrameCount.Store(device.ID, 0) + service.DeviceFrameCount[device.ID] = 0 service.DeviceIsGettingFrame.Store(device.ID, false) } } @@ -100,7 +100,7 @@ func ReadConfigAndSetSystem() { //说明没有这个设备,需初始化添加 service.DeviceRWMap.Store(device.ID, &sync.RWMutex{}) service.DeviceCurrentFrameMap.Store(device.ID, gocv.NewMat()) - service.DeviceFrameCount.Store(device.ID, 0) + service.DeviceFrameCount[device.ID] = 0 service.DeviceIsGettingFrame.Store(device.ID, false) } if is_get == false && device.NextStop == false { //如果设备流已经停止且不暂停,则开启 diff --git a/service/tool.go b/service/tool.go index 88e1018..c3922e2 100644 --- a/service/tool.go +++ b/service/tool.go @@ -180,6 +180,7 @@ func getVideoFrame(device proto.DeviceInfo) { fontColor := color.RGBA{G: 255} lineType := 2 z := 0 + var frame gocv.Mat for { if device.LogFrame > 0 && z%device.LogFrame == 0 { log.Printf("设备:%d 当前帧: %d\n", device.ID, z) @@ -187,7 +188,7 @@ func getVideoFrame(device proto.DeviceInfo) { if device.NextStop { break } - frame := gocv.NewMat() + frame = gocv.NewMat() ok := webcam.Read(&frame) if !ok { log.Printf("设备:%v 错误: 无法从视频流中读取帧\n", device) @@ -214,6 +215,10 @@ func getVideoFrame(device proto.DeviceInfo) { } z++ } + err2 := frame.Close() + if err2 != nil { + log.Printf("设备:%d 错误: 无法释放帧资源,err:%s \n", device.ID, err.Error()) + } } // 发起get请求,返回响应状态码