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 05 Python
django 常用orm操作详解
Sep 13 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
python实现超简单的视频对象提取功能
Jun 04 Python
解决python线程卡死的问题
Feb 18 Python
详解Python3注释知识点
Feb 19 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Python hashlib模块加密过程解析
Nov 05 Python
python3 webp转gif格式的实现示例
Dec 10 Python
Python sep参数使用方法详解
Feb 12 Python
基于python图像处理API的使用示例
Apr 03 Python
Python 列表反转显示的四种方法
Nov 16 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日期时间函数的高级应用技巧
2009/05/16 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
php 伪静态之IIS篇
2014/06/02 PHP
代码生成器 document.write()
2007/04/15 Javascript
$()JS小技巧
2007/07/21 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
基于django传递数据到后端的例子
2019/08/16 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
行政管理人员精品工作推荐信
2013/11/04 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
顶碗少年教学反思
2014/02/21 职场文书
秋季运动会广播稿
2014/02/22 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
Python if else条件语句形式详解
2022/03/24 Python
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS