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在linux中输出带颜色的文字的方法
Jun 19 Python
python3实现暴力穷举博客园密码
Jun 19 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
Python做智能家居温湿度报警系统
Sep 25 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
如何用python 操作zookeeper
Dec 28 Python
pytorch显存一直变大的解决方案
Apr 08 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
图形数字验证代码
2006/10/09 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
PDO实现学生管理系统
2020/03/21 PHP
javascript实现的listview效果
2007/04/28 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python打印输出数组中全部元素
2018/03/13 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
python获取服务器响应cookie的实例
2018/12/28 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
市场督导岗位职责
2015/04/10 职场文书
三好学生竞选稿
2015/11/21 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
详解Java实现数据结构之并查集
2021/06/23 Java/Android
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL