YOLOv5识别目标的实时坐标打印

2023-05-16

引言

这个功能看似鸡肋,但对于无人机目标识别与追踪有重要意义,通过目标在摄像头视野的坐标位置,可以推算出无人机相对与目标的位置,从而对无人机进行位置矫正。因此,添加代码打印坐标并不是主要目的,关键在于寻找坐标信息在工程中的位置。

实现

在utils文件夹下的plot.py中plot_one_box函数下添加下面三行代码,输出目标框的五点坐标。

print("左上点的坐标为:(" + str(c1[0]) + "," + str(c1[1]) + "),右上点的坐标为(" + str(c2[0]) + "," + str(c1[1]) + ")")
print("左下点的坐标为:(" + str(c1[0]) + "," + str(c2[1]) + "),右下点的坐标为(" + str(c2[0]) + "," + str(c2[1]) + ")")
print("中心点的坐标为:(" + str((c2[0] - c1[0]) / 2 + c1[0]) + "," + str((c2[1] - c1[1]) / 2 + c1[1]) + ")")

注意,坐标原点是捕捉到画面左上角

给出修改后的plot_one_box()函数完整代码:

def plot_one_box(x, img, color=None, label=None, line_thickness=3):
    # 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(c1[1]) + ")")
    print("左下点的坐标为:(" + str(c1[0]) + "," + str(c2[1]) + "),右下点的坐标为(" + str(c2[0]) + "," + str(c2[1]) + ")")
    print("中心点的坐标为:(" + str((c2[0] - c1[0]) / 2 + c1[0]) + "," + str((c2[1] - c1[1]) / 2 + c1[1]) + ")")
    ##########################################################################    
    if label:
        tf = max(tl - 1, 1)  # font thickness
        t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0]
        c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3
        cv2.rectangle(img, c1, c2, color, -1, cv2.LINE_AA)  # filled
        cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA)

效果

  1. 运行图片识别

可以看到在运行结果中打印出了各个目标的位置信息

  1. 视频识别

打印出视频中每一帧图片中目标位置。

  1. 单摄像头实时检测

在30FPS的帧率下打印出每一帧的目标位置。

  1. 多摄像头实时检测

在多线程识别时仍然能有效打印出坐标。

求学路上,你我共勉(๑•̀ㅂ•́)و✧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YOLOv5识别目标的实时坐标打印 的相关文章

随机推荐

  • DB9接口详解---DB9引脚在 UART,CAN,RS485中的定义

    DB9的公母如下 xff1a 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 超强整理!PCB设计之电流与线宽的关系

    关于pcb线宽和电流的经验公式 xff0c 关系表和软件网上都很多 xff0c 本文把网上的整理了一下 xff0c 旨在给广大工程师在设计PCB板的时候提供方便 以下总结了八种电流与线宽的关系公式 xff0c 表和计算公式 xff0c 虽然
  • nginx 主动健康检查搭建详解(nginx_upstream_check_module)

    版本信息 nginx 1 21 1 下载nginx upstream check module模块 nginx upstream check module master zip wget https codeload github com
  • paddle推理部署(cpu)

    我没按照官方文档去做 xff0c 吐槽一下 xff0c 官方文档有点混乱 一 概述 总结起来 xff0c 就是用c 43 43 示例代码 xff0c 用一个模型做推理 二 示例代码下载 https www paddlepaddle org
  • Vector的用法

    我不知道大家是怎么理解Vector和怎样使用的 xff0c 这篇文章主要是发表我自己对于Vector的看法 xff0c 仅仅属于个人理解 xff0c 如果有什么错误 xff0c 也希望大家指正哈 目录 1 xff1a Vector的概念 2
  • float的表示

    xfeff xfeff 先说一下计算机中二进制的算法 xff1a 整数 整数的二进制算法大家应该很熟悉 xff0c 就是不断的除以2取余数 xff0c 然后将余数倒序排列 比如求9的二进制 xff1a 9 2 61 4 余 1 4 2 61
  • cmake系列(三)

    目录 多个源文件 同一目录 xff0c 多个源文件 多个源文件 同一目录 xff0c 多个源文件 本小节对应的源代码所在目录 xff1a Demo2 上面的例子只有单个源文件 现在假如把 power 函数单独写进一个名为 MathFunct
  • ORACLE 字符串聚合函数 strcat

    create or replace type strcat type as object currentstr varchar2 4000 currentseprator varchar2 8 static function ODCIAgg
  • 无人机器件选择参考

    无人机飞控 xff0c 引脚预留数量 1 xff0c 四路pwm 2 xff0c 无线通信spi 3 xff0c 陀螺仪通信用iic 4 xff0c 串口调试用uart 5 xff0c led灯用普通io 6 xff0c 电量检测和电机堵塞
  • 字节对齐的规则总结

    一 什么是字节对齐 为什么要对齐 现代计算机中内存空间都是按照byte划分的 xff0c 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始 xff0c 但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问 xff0c 这就需要
  • C++中第三方库的一般使用方式(libxl库为例)

    本篇介绍如何使用C C 43 43 的第三方库 xff0c 学会使用第三方库很重要 xff0c 尤其对于使用C C 43 43 语言的人来说 xff0c 标准库能做的事不能说太少 xff0c 恰当的说应该是没那么有趣 学会使用第三方库 xf
  • 三相电动机用单相电源

    三相电机改为单相运行 单相电机配用电容不是越大越好 三相电动机用单相电源 三相电机改为单相运行 介绍几种简便易行的方法 xff0c 可以不改动电机内部绕组而将三相电机改为单相运行 有6 种 xff1a 一 加电容法 xff39 形接法的三相
  • curl_init()和curl_multi_init()多线程的速度比较

    来源 http www webkaka com tutorial php 2013 102843 php中curl init 的作用很大 xff0c 尤其是在抓取网页内容或文件信息的时候 xff0c 例如之前文章curl获得header检测
  • 连接两字符串函数

    include lt stdio h gt include 34 string h 34 char Strcat char s1 char s2 printf 34 连接之后的字符串为 xff1a 34 for s1 61 39 0 39
  • CAN通信数据帧介绍

    CAN通信有五个帧 xff0c 其中最重要的是数据帧 xff01 xff01 xff01 xff01 我们下面开始讨论数据帧 一 数据帧的格式 xff08 数据帧有七个段组成 xff09 xff0c 帧起始 表示数据帧开始的段 xff0c
  • STM32压力传感器信号采集-24位AD HX720 HX711 原理介绍

    我做过很多工业用压力采集产品 xff0c 用过很多高分辨率的AD芯片 xff0c 其中有两款值得推荐 一个是海芯科技出的HX711等24位AD xff0c 一个是塞普拉斯出的CS5532等24位AD 国产芯片和进口芯片有差距 xff0c 但
  • stm32实现网络音频-原理图单片机程序C#上位机程序

    电子可以一边玩 xff0c 一边研究 xff0c 网络音频这个课题特别适合电子爱好者 几方面的挑战如下 xff0c 单片机实现对接以太网 实时对音频流解码播放 xff0c 上位机配合单片机做音频流传输控制 xff0c 音频信号的对接放大处理
  • rosdep init and update Error

    rosdep init Error sudo rosdep init ERROR default sources list file already exists br etc ros rosdep sources list d 20 de
  • Postman汉化版本竟如此简单,全中文真香

    对于国内程序员来说 xff0c 外国开发软件的一个使用门槛是全英文的 xff0c 对于不熟悉各种专业术语的同学 xff0c 上手比较麻烦 因此有种方法就是使用汉化版的外国软件 xff0c 但 Postman 并没有汉化版本 但是postma
  • YOLOv5识别目标的实时坐标打印

    引言 这个功能看似鸡肋 xff0c 但对于无人机目标识别与追踪有重要意义 xff0c 通过目标在摄像头视野的坐标位置 xff0c 可以推算出无人机相对与目标的位置 xff0c 从而对无人机进行位置矫正 因此 xff0c 添加代码打印坐标并不