目标检测:行人智能检测测试报错panic: runtime error,是什么原因?

原创
10/09 10:23
阅读数 17

值钱啊我们分享过行人智能检测功能在景区项目中的测试。在景区项目系统中,替换本地文件出现报错,错误信息:“panic: runtime error: index out of range [1] with length 1”,此错误意思是程序运行超出索引的范围,会导致程序崩溃。

 

先看下代码:

var allFile = ""
for _, dirfile := range dirfiles {
   fname := dirfile.Name()
   n := strings.Split(fname, "_")[1]
   allFile += fmt.Sprintf("%s/%s;", dir, n)
}
allFile = allFile[:len(allFile) -1]

nameSplit := strings.Split(arr[index].Filename, ";")
   log.Println("文件有多个需要替换:" + arr[index].Filename)

   DoLocalFile(0, nameSplit,  func() {
      index+=1
      DoValueToReplaceSource(arr, index, cb)
   })

   return

上面的代码是把所有文件夹下的视频文件进行拼接,并使用分号(“;”)为分割符。但是该代码会出现一个错误:引用一个为nil的切片,即下标为0的元素,这个错误会造成代码中出现index out of range错误,这样就会触发panic,使程序不能正常的运行。

这里使用的是分号(“;”)分割,所以只要进行一次的判断,把分号分割出来的字符需要大于1才行,若果是小于等于1的话就会出错。代码修改如下:

nameSplit := strings.Split(arr[index].Filename, ";")
if len(nameSplit) > 1 {
   log.Println("文件有多个需要替换:" + arr[index].Filename)

   DoLocalFile(0, nameSplit,  func() {
      index+=1
      DoValueToReplaceSource(arr, index, cb)
   })

   return
} else {
   if IsExists(arr[index].Filename) {
      ChangeFile(arr[index].Filename)
   } else {
      log.Println("没有此文件路径")
   }
}

修改后该报错即可解决。TSINGSEE青犀视频仍将不断拓展视频直播系统的功能和优势,一方面,通过AI智能分析实现了智能判断,另一方面,通过物联网、大数据等技术获得最鲜活的数据信息,并进行精准的计算,欢迎大家了解或测试。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部