我们开发的行人检测功能仍在园区测试中,目前正在进行进行人数的编译,简单说就是一个分析总客流的功能。我们主要的实现方式是先通过python程序将每天的时间段(毫秒级)的行人制作一个数据库,人数和人数ID都保存到数据库。已被分析,如找出0人的时间段和在0人之间的总人数。
在分割0人时,出现超出数组的范围。
错误日志:“panic: runtime error: index out of range [-1] Goroutine 115 [running]: Gitee.com/xxxxx”
先找到对应的错误信息点,再使用调试工具进行调试。从上面的图中我们可以看到一个函数:“FindDatabasePersons”:
此函数就是从历史的数据库查找符合条件的人数用于替换,进到此函数里面有个“DoSplitZeroPerson”函数,主要错误在此处。
yMd := fmt.Sprintf("%d_%02d_%02d", y, m, d)
if !IsTSnap(yMd, sh, eh) { //首先查找数据库,把数据保存,下次就不用在查找数据库,节省时间
if IsTable(yMd) {
base := QuerySqlTableToWhere(yMd, sql)
newBase := DoSplitZeroPerson(base, 2 * 1000)
for i:=0;i<len(newBase)-1;i++ {
sql.StartTimestamp = newBase[i].Timestamp
sql.EndTimestamp = newBase[i+1].Timestamp
主要问题是最后的if判断,是有问题的。
所以问题最后一个if判断中,将newBase这个数组里面的长度减去1,如果newBase数组没有值是一个空的数组,那么减去1,此数组就会取下标为负数。取负数下标是有问题的,所以上面的报错是有个”[-1]”。要修改也很简单,在加个if判断即可:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。