yolov5v7v8目标检测增加计数功能--免费源码
在yolo系列中,很多网友都反馈过想要在目标检测的图片上,显示计数功能。其实官方已经实现了这个功能,只不过没有把相关的参数写到图片上。所以微智启软件工作室出一篇教程,教大家如何把计数的参数打印到图片上。
一、yolov5目标检测增加计数功能实现
1、在detect.py代码中的132行左右,找到这样的代码
{n}是指类别统计的数量
{names[int(c)]}则是标签名
所以只需要调整这两个参数,就可以得到想要的格式,对于我们常用的习惯,我把代码改成了如下的格式:
运行输出代码,发现前面多出一串,并不是我们想要的效果
所以需要我们自己定义一个变量,只接收后面的统计参数即可。我这里放在了55行,定义一个空的字符串
然后在s +=的后面接收【f"{names[int(c)]}{'s' * (n > 1)}:{n} |"】的值
然后,只需要在合适的位置,通过cv2,把参数写到图片即可。我这里添加到了151行左右,也就是im0 = annotator.result()的后面。
关于cv2的参数含义如下:
im0
: 这是输入图像,即要在其上添加文本的图像。f"{s}"
: 这是要添加到图像上的文本。在这里,s
是一个变量,它被转换为字符串并作为文本添加到图像上。(30, 30)
: 这是文本在图像上的位置坐标。在这个例子中,文本将放置在图像的 (30, 30) 位置。cv2.FONT_HERSHEY_SIMPLEX
: 这是字体类型。在这个例子中,使用了 Hershey Simplex 字体。1
: 这是字体缩放因子。这个值决定了文本的大小。(0, 0, 255)
: 这是文本的颜色。在这个例子中,文本颜色为红色,表示为 BGR(蓝色、绿色、红色)格式的元组。2
: 这是文本线条的粗细。这个值决定了文本边缘的粗细程度。cv2.LINE_AA
: 这是线条类型。在这个例子中,使用了抗锯齿线条。
在cv2添加完后,再清空字符串,方便下次的统计
二、yolov7目标检测增加计数功能
yolov7和yolov5其实差不多的,可以先运行看一下效果,这个是统计的输出如下,发现有现成的效果:
打开detect.py。找到117行左右
所以我们只需把{n}–这里的{n}也就是类别的数量,移动到后面就可以了,同时还可以把逗号换成自己想要的符号,我这里是“ | ”移动后如下(可以根据自己的需求更改):
接下来,在合适的位置,通过cv2来把文字显示图片上
im0
: 这是输入图像,即要在其上添加文本的图像。f"{s}"
: 这是要添加到图像上的文本。在这里,s
是一个变量,它被转换为字符串并作为文本添加到图像上。(30, 30)
: 这是文本在图像上的位置坐标。在这个例子中,文本将放置在图像的 (30, 30) 位置。cv2.FONT_HERSHEY_SIMPLEX
: 这是字体类型。在这个例子中,使用了 Hershey Simplex 字体。1
: 这是字体缩放因子。这个值决定了文本的大小。(0, 0, 255)
: 这是文本的颜色。在这个例子中,文本颜色为红色,表示为 BGR(蓝色、绿色、红色)格式的元组。2
: 这是文本线条的粗细。这个值决定了文本边缘的粗细程度。cv2.LINE_AA
: 这是线条类型。在这个例子中,使用了抗锯齿线条。
v7从115行到133行的完整代码如下,可以直接替换。
三、yolov8目标检测计数功能实现
yolov8相对于前面两个的计数,稍微来说比较麻烦点,可能也有类似的参数,但是我没有找到,所以debug后发现【self.results[i].boxes.cls】这个属性里面,有类别的统计
打开【ultralytics/engine/predictor.py】只需要遍历统计这个类别序号的个数即可。
遍历完数据后,定义一个空的字典【names_dic = {}】
然后,在合格的位置,cv2,我添加在了
这个方法的后面,因为只有执行了它,self.plotted_img才会被赋值
运行效果如下图:
至此,代码已经全部给出了,只要注意代码的缩进,就可以大功告成了。不过,有的朋友还是不懂得修改,那么我就把测试的python完整代码放到csdn上吧,设置的0积分下载。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~