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之eval()函数危险性浅析
Jul 03 Python
Python datetime时间格式化去掉前导0
Jul 31 Python
Python中实现结构相似的函数调用方法
Mar 10 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
Jun 26 Python
Python实现的下载网页源码功能示例
Jun 13 Python
通过Pandas读取大文件的实例
Jun 07 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
对python中的装包与解包实例详解
Aug 24 Python
如何基于Python创建目录文件夹
Dec 31 Python
python实现拼图小游戏
Feb 22 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
Python如何在循环内使用list.remove()
Jun 01 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 强制下载文件实现代码
2013/10/28 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
react redux入门示例
2018/04/19 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
数据库测试通常都包括哪些方面
2015/11/30 面试题
公证书标准格式
2014/04/10 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
研究生个人学年总结
2015/02/14 职场文书
营业员岗位职责范本
2015/04/14 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫
Nginx反向代理、重定向
2022/04/13 Servers
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL