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访问纯真IP数据库脚本分享
Jun 29 Python
Python有序字典简单实现方法示例
Sep 28 Python
python多维数组切片方法
Apr 13 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
Python数据类型之列表和元组的方法实例详解
Jul 08 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
python 自动识别并连接串口的实现
Jan 19 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
php通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
img的onload的另类用法
2008/01/10 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
带你了解python装饰器
2017/06/15 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
django解决跨域请求的问题详解
2019/01/20 Python
python 读取二进制 显示图片案例
2020/04/24 Python
Python eval函数原理及用法解析
2020/11/14 Python
幼儿园小班家长寄语
2014/04/02 职场文书
青春寄语大全
2014/04/09 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
质量整改通知单
2015/04/21 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
创业计划书之酒店
2019/08/30 职场文书