YOLOv8输出detect检测到的目标坐标信息

之前有人问在v8中怎样在预测图中输出坐标信息,现在有时间改了改,和v5没啥区别

这是我v5里的输出目标坐标信息的博客

目录

一、添加打印坐标信息代码

二、添加效果

三、隐藏置信度和标签


2023.11.17 最近有小伙伴问我为什么添加了代码,运行的时候并没有显示坐标信息,我认为主要有两个原因:
① 没预测框的话就是你的数据集问题,没检测到(估计这种情况极少)
② 大部分是因为使用的
终端运行,你是pip install Ultralytics 这个包,运行的代码也是这里边的,但是你修改的是你从GitHub下载下来Ultralytics-main里边的代码,根本没去修改pip install Ultralytics包里的内容,如果想用终端运行并打印坐标,还需要去环境包里找到相应的代码去修改,当然你也可以尝试使用.py文件的方式去运行,看看这样是不是就会出现坐标信息
后续如果你想改进yolov8,也是同样的道理,需要修改pip install Ultralytics包的代码

这里附上.py运行程序(run运行)

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('runs/train/exp/weights/best.pt')
    model.predict(source='dataset/images/test',
                project='runs/detect',
                name='exp',
                save=True,
                # visualize=True # visualize model features maps
                )

一、添加打印坐标信息代码

YOLOv8的detect后处理绘制目标框在 ultralytics/engine/results.py 中,代码如下所示

进入 annotator.box_label(也就是 ultralytics/utils/plotting.py 这个文件下)

在图上位置添加红框中的代码即可

            # # ---------------------------------------------------------------------------------------------------#
            # 在预测图中绘制一个中心坐标红点
            cv2.circle(self.im, ((p1[0] + p2[0]) // 2, (p1[1] + p2[1]) // 2), self.lw, (0, 0, 255), self.lw)
            # 创建了个中心点坐标变量
            Center = (((p2[0] - p1[0]) / 2 + p1[0]), ((p2[1] - p1[1]) / 2 + p1[1]))
            cv2.putText(self.im, str(Center), ((p1[0] + p2[0]) // 2, (p1[1] + p2[1]) // 2), 0, self.lw / 3, txt_color,
                        thickness=4, lineType=cv2.LINE_AA)
            # # 打印坐标信息
            print("左上点的坐标为:(" + str(p1[0]) + "," + str(p1[1]) + "),右上点的坐标为(" + str(p2[0]) + "," + str(
                p1[1]) + ")")
            print("左下点的坐标为:(" + str(p1[0]) + "," + str(p2[1]) + "),右下点的坐标为(" + str(p2[0]) + "," + str(
                p2[1]) + ")")
            print("中心点的坐标为:(" + str((p2[0] - p1[0]) / 2 + p1[0]) + "," + str((p2[1] - p1[1]) / 2 + p1[1]) + ")")
            # # ---------------------------------------------------------------------------------------------------#

二、添加效果

看的出和v5没什么区别

三、隐藏置信度和标签

当时想着在v5里预测图不显示置信度,但嫌改起来麻烦,就没去搞,但在v8里,不得不说比v5使用更便捷,简简单单加个参数就能实现隐藏置信度

如果想隐藏标签的话在后边加上 show_label=False

from ultralytics import YOLO



# 预测
model = YOLO("yolov8n.pt")
source = r'E:\Deep learning\YOLOv8\ultralytics\assets'
results = model.predict(source,save=True,show_conf=False)  # predict on an image

猜你喜欢

转载自blog.csdn.net/Zeng999212/article/details/133748976