yolov5返回坐标的方法实例


Posted in Python onMarch 17, 2022

yolov5返回坐标(v6版)

1 、从yolov5文件夹李找到detect.py,按Ctrl+F 输入annotator.box_label;

if save_img or save_crop or view_img:  # Add bbox to image
                        c = int(cls)  # integer class
                        label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}')
                        annotator.box_label(xyxy, label, color=colors(c, True))

2、找到这个代码后按住ctrl键,鼠标点击box_label,就会跳到plots.py文件并定位到box_label定义的地方;

3、找到p1, p2 = (int(box[0]), int(box[1])), (int(box[2]), int(box[3])),在这行代码下面新增:

print("左上点的坐标为:(" + str(p1[0]) + "," + str(p1[1]) + "),右下点的坐标为(" + str(p2[0]) + "," + str(p2[1]) + ")")

4、完成后的代码如下:

def box_label(self, box, label='', color=(128, 128, 128), txt_color=(255, 255, 255)):
        # Add one xyxy box to image with label
        if self.pil or not is_ascii(label):
            self.draw.rectangle(box, width=self.lw, outline=color)  # box
            if label:
                w, h = self.font.getsize(label)  # text width, height
                outside = box[1] - h >= 0  # label fits outside box
                self.draw.rectangle([box[0],
                                     box[1] - h if outside else box[1],
                                     box[0] + w + 1,
                                     box[1] + 1 if outside else box[1] + h + 1], fill=color)
                # self.draw.text((box[0], box[1]), label, fill=txt_color, font=self.font, anchor='ls')  # for PIL>8.0
                self.draw.text((box[0], box[1] - h if outside else box[1]), label, fill=txt_color, font=self.font)
        else:  # cv2
            p1, p2 = (int(box[0]), int(box[1])), (int(box[2]), int(box[3]))
            print("左上点的坐标为:(" + str(p1[0]) + "," + str(p1[1]) + "),右下点的坐标为(" + str(p2[0]) + "," + str(p2[1]) + ")")
            
            cv2.rectangle(self.im, p1, p2, color, thickness=self.lw, lineType=cv2.LINE_AA)

5、测试情况:回到命令行,cd到yolov5文件夹,输入指令:python detect.py --source ../mask.1.jpg,其中mask.1.jpg应改为你yolov5文件夹下的图片名称;按回车键后运行就发现输出的信息多了刚才添加的一行

(venv) (base) rongxiao@rongxiao:~/PycharmProjects/yolococo/yolov5$ python detect.py --source ../mask.1.jpg
detect: weights=yolov5s.pt, source=../mask.1.jpg, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False
YOLOv5 ? v6.0-147-g628817d torch 1.8.2+cpu CPU

Fusing layers... 
Model Summary: 213 layers, 7225885 parameters, 0 gradients
左上点的坐标为:(982,384),右下点的坐标为(1445,767)
左上点的坐标为:(724,237),右下点的坐标为(770,277)
左上点的坐标为:(711,226),右下点的坐标为(1689,938)
image 1/1 /home/rongxiao/PycharmProjects/yolococo/mask.1.jpg: 384x640 2 persons, 1 airplane, Done. (0.182s)
Speed: 1.1ms pre-process, 181.7ms inference, 1.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs/detect/exp15

附参考:yolov5输出检测到的目标坐标信息(旧版本)

找到detect.py,在大概113行,找到plot_one_box

                # Write results
                for *xyxy, conf, cls in reversed(det):
                    if save_txt:  # Write to file
                        xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist()  # normalized xywh
                        with open(txt_path + '.txt', 'a') as f:
                            f.write(('%g ' * 5 + '\n') % (cls, *xywh))  # label format

                    if save_img or view_img:  # Add bbox to image
                        label = '%s %.2f' % (names[int(cls)], conf)
                        plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3)

ctr+鼠标点击,进入general.py,并自动定位到plot_one_box函数,修改函数为

def plot_one_box(x, img, color=None, label=None, line_thickness=None):
    # Plots one bounding box on image img
    tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1  # line/font thickness
    color = color or [random.randint(0, 255) for _ in range(3)]
    c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3]))
    cv2.rectangle(img, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA)
    print("左上点的坐标为:(" + str(c1[0]) + "," + str(c1[1]) + "),右下点的坐标为(" + str(c2[0]) + "," + str(c2[1]) + ")")

即可输出目标坐标信息了

yolov5返回坐标的方法实例

总结

到此这篇关于yolov5返回坐标的文章就介绍到这了,更多相关yolov5返回坐标内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
从零学python系列之从文件读取和保存数据
May 23 Python
Python中使用Tkinter模块创建GUI程序实例
Jan 14 Python
Python实现简单的可逆加密程序实例
Mar 05 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
python for 循环获取index索引的方法
Feb 01 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
详解Python牛顿插值法
May 11 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 Python
PyTorch中的torch.cat简单介绍
Mar 17 #Python
Python Pygame实战在打砖块游戏的实现
python超详细实现完整学生成绩管理系统
Mar 17 #Python
Python Pygame实战之塔防游戏的实现
pytorch中的 .view()函数的用法介绍
Mar 17 #Python
Python绘画好看的星空图
opencv深入浅出了解机器学习和深度学习
You might like
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python fileinput模块使用实例
2015/06/03 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python flask安装和命令详解
2019/04/02 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
活动邀请函范文
2014/01/19 职场文书
执行总经理岗位职责
2014/02/03 职场文书
运动会开幕式解说词
2014/02/05 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
Golang 结构体数据集合
2022/04/22 Golang