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 相关文章推荐
pydev使用wxpython找不到路径的解决方法
Feb 10 Python
Python操作MySQL简单实现方法
Jan 26 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
Feb 07 Python
使用Tkinter制作信息提示框
Feb 18 Python
python中time、datetime模块的使用
Dec 14 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工厂模式
2014/11/25 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
美国家具网站:Cymax
2016/09/17 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
信用社实习人员自我鉴定
2013/09/20 职场文书
外贸业务员的岗位职责
2013/11/23 职场文书
优秀交警事迹材料
2014/01/26 职场文书
《落花生》教学反思
2014/02/25 职场文书
学习十八大报告感言
2014/02/28 职场文书
教师党员承诺书
2014/03/25 职场文书
高中美术教学反思
2016/02/17 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android