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基于DES算法加密解密实例
Jun 03 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
使用Python对SQLite数据库操作
Apr 06 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
Python断言assert的用法代码解析
Feb 03 Python
详解python解压压缩包的五种方法
Jul 05 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
python 利用matplotlib在3D空间中绘制平面的案例
Feb 06 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
Python 数据可视化之Matplotlib详解
Nov 02 Python
python画条形图的具体代码
Apr 20 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
php 无限极分类
2008/03/27 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP之短标签开启设置
2013/06/17 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
JavaScript prototype属性使用说明
2010/05/13 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
python实现代码审查自动回复消息
2021/02/01 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
实习生求职自荐信
2014/02/07 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
社团活动总结
2014/04/28 职场文书
工会换届选举方案
2014/05/21 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
小学班长竞选稿
2015/11/20 职场文书
MySQL Router的安装部署
2021/04/24 MySQL