基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)

1.简介

1.1 2D测量技术

基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。

工业制造:在工业制造过程中,精确测量是确保产品质量和一致性的关键。基于单目相机的2D测量技术可以用于检测和测量零件尺寸、位置、形状等参数,进而实现自动化生产和质量控制。通过实时监测并反馈测量结果,可以快速发现和纠正生产中的偏差,提高产品的一致性和合格率。

计算机视觉:单目相机作为计算机视觉的传感器之一,能够捕捉并记录场景中的图像信息。基于单目相机的2D测量技术可以通过对图像进行处理和分析来提取目标物体的特征和参数。这种技术在目标检测、物体跟踪、姿态估计等计算机视觉任务中起着至关重要的作用。

地理测绘和导航:基于单目相机的2D测量技术可以应用于地理测绘和导航领域。通过获取地面或航空图像,并利用图像处理和计算机视觉算法,可以实现地表特征的提取、地形建模、数字地图的生成等工作。这对于城市规划、农业管理、导航系统等方面具有重要的应用价值。

医学影像:在医学领域,基于单目相机的2D测量技术可以用于医学影像的分析和测量。通过对医学图像进行处理和分析,可以提取器官、病灶的形状、大小、位置等信息,辅助医生进行诊断和治疗决策。这种技术在影像学、放射学、眼科等医学专业中得到广泛应用。

综上所述,基于单目相机的2D测量技术在工业制造、计算机视觉、地理测绘和导航、医学影像等领域都有着重要的背景和意义。它可以提高生产效率、产品质量,推动科学研究和医学进步,为各个领域带来更多的机遇和挑战。

1.2 yolo算法

YOLO(You Only Look Once)是一种实时目标检测算法,它的主要思想是将目标检测问题转化为一个回归问题。相较于传统的目标检测算法,YOLO具有更快的处理速度和较高的准确性。

YOLO算法的基本原理如下:

  1. 将输入图像划分为一个固定大小的网格。每个网格负责预测该网格中是否包含目标以及目标的边界框。

  2. 每个网格预测多个边界框(一般为5个)以适应不同形状的目标。

  3. 每个边界框预测目标类别的概率。

  4. 对每个边界框的位置和类别进行综合预测。

  5. 使用非极大值抑制(NMS)处理重叠的边界框,以获取最终的目标检测结果。

YOLO算法相较于其他目标检测算法的优势在于其端到端的设计,能够实现实时目标检测,并且减少了检测过程中的多次重复计算。然而,由于YOLO将图像划分为网格,对于小尺寸目标和密集目标的检测效果可能会稍差。

此外,YOLO还有不同版本的改进,如YOLOv2、YOLOv3和YOLOv4等,这些改进版本在准确性和速度方面有所提升,同时也引入了一些新的技术和网络结构,如多尺度预测、锚框、Darknet-19等。


 

 

2.功能实现 

2.1构思:

上一章,我们实现了opencv对手机,卡片等轮廓清晰物体的尺寸测量,但是在过程中,我们发现复杂物体的轮廓很难有效提取,干扰太多,不准确。所以我思考用深度学习的方法来寻找这个包围物体的框,于是想到了yolo算法。(当然这个想法比较简单,欢迎大佬评论区指正)

这是我导的一个项目,用于未来试智能立体停车场的视觉部分,要求只能单目相机(单目便宜,真实服啦),最后实时帧率只能到6帧左右,当然用gpu加速可以30帧以上。但是runtimeonnx用过的都懂,对环境要求较高,不太适合普及。

2.2 代码思路

主函数

import cv2
import utlis
from ours import *
# from utlis import *
import time###################################
webcam = True
path = 'img.png'
# cap = cv2.VideoCapture(r'D:\Opencv-project-main\CVZone\09 Object Size Measurement\5.mp4')
cap = cv2.VideoCapture(0)
cap.set(10,160)
cap.set(3,1920)
cap.set(4,1080)
scale = 3
wP = 210 *scale
hP= 297 *scale
###################################pTime = 0
while True:if webcam:success,img = cap.read()else: img = cv2.imread(path)img1=img.copy()imgContours , conts = utlis.getContours(img,minArea=50000,filter=4)if len(conts) != 0:biggest = conts[0][2]#print(biggest)imgWarp = utlis.warpImg(img, biggest, wP,hP)img=imgWarp.copy()onnx_path = r'D:\Opencv-project-main\CVZone\09 Object Size Measurement\yolov5s.onnx'model = Yolov5ONNX(onnx_path)or_img,box_coords = model.detect(imgWarp)img = utlis.dectshow(img,box_coords)cTime = time.time()fps = 1 / (cTime - pTime)pTime = cTimecv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 3,(255, 0, 255), 3)# 图像预处理及边缘检测# edges = utlis.preprocess(img)## # 获取物体轮廓并进行多边形逼近# approx = utlis.get_object_contour(edges, img)cv2.imshow('Object Detection', img)# cv2.polylines(imgContours2,[obj[2]],True,(0,255,0),2)# nPoints = utlis.reorder(obj[2])# nW = round((utlis.findDis(nPoints[0][0]//scale,nPoints[1][0]//scale)/10),1)# nH = round((utlis.findDis(nPoints[0][0]//scale,nPoints[2][0]//scale)/10),1)### cv2.arrowedLine(imgContours2, (nPoints[0][0][0], nPoints[0][0][1]), (nPoints[1][0][0], nPoints[1][0][1]),#                 (255, 0, 255), 3, 8, 0, 0.05)# cv2.arrowedLine(imgContours2, (nPoints[0][0][0], nPoints[0][0][1]), (nPoints[2][0][0], nPoints[2][0][1]),#                 (255, 0, 255), 3, 8, 0, 0.05)# x, y, w, h = obj[3]# cv2.putText(imgContours2, '{}cm'.format(nW), (x + 30, y - 10), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1.5,#             (255, 0, 255), 2)# cv2.putText(imgContours2, '{}cm'.format(nH), (x - 70, y + h // 2), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1.5,#             (255, 0, 255), 2)cv2.imshow('A4', img1)img = cv2.resize(img,(0,0),None,0.5,0.5)cv2.waitKey(1)

 图像处理及仿射变换部分代码

 yolo推理部分代码

 有需要的朋友,欢迎私聊博主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】如何保护IP地址?

使用防火墙是保护IP地址的一个重要手段。防火墙可以监控和过滤网络流量,并阻止未经授权的访问。一家网络安全公司的研究显示,超过80%的企业已经部署了防火墙来保护他们的网络和IP地址。 除了防火墙,定期更新操作系统和应用程序也是保护IP地址…

学信息系统项目管理师第4版系列24_整合管理

1. PMBOK 1.1. 自1987年以来,PMBOK-直是基于过程的项目管理标准的重要代表 1.1.1. 基于过程的方法是项目管理的基石 1.2. 从2021年开始,第7版PMBOK采用了基于原则的标准,其中包含了 12个项目管理基本原则,这些基本原则为有效的…

Python数据攻略-递归方式实现json多层级数据展平

之前介绍过使用pandas如何展平json的多层数据,如果有兴趣可以参考文章 Python数据攻略-Pandas的json_normalize方法 Python数据攻略-递归方式实现json多层级数据展平 今天再介绍一个非常好用的使用递归的方式展平json数据。 文章目录 数据处理目标操作示例核心函数方法操作…

硬件基本功--过流、过压保护电路

1.简介 过流保护(OCP):当电路电流超过预定最大值时,使保护装置动作的一种保护方式。不允许超过预定最大值电流,不然会烧坏电路的器件。过压保护(OVP):被保护电路电压超过预定的最大值时,使电源断开或使受控设备电压降低…

AAPT2简介

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、使用介绍3.3 编译3.2 链接3.3 dump…

ChatGPT AIGC 高效办公自动化案例

根据业务员姓名查找对应月份的科目成绩。 我们让ChatGPT AIGC来完成Excel公式。 Prompt:有一个表格A列为姓名,B列为语文,C列为数学,请根据J2单元格的姓名 ,查找出对应的数学成绩,请写出函数来完成 将生成的vlookup函数公式=VLOOKUP(J2, A:C, 3, FALSE)复制到表格中进行验…

Windows11下清理Docker Desktop与wsl的C盘空间占用

一、清理Docker Desktop的磁盘占用 //【查看docker 占用的空间】 docker system dfTYPE 列出了docker 使用磁盘的 4 种类型: Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。Containers:运行的容器占用…

整理mongodb文档:副本集成员可以为偶数

个人博客 整理mongodb文档:副本集成员可以为偶数 想了下,仲裁节点还是不想直接说太多,怕有的同学想太多,且本身副本集就偏向运维的,新手基本也没什么权限操作,就不多废话了。 文章概叙 文章从MongoDB是否可以用偶数…

【计算机网络笔记】计算机网络的结构

系列文章目录 什么是计算机网络? 什么是网络协议? 文章目录 系列文章目录网络边缘接入网络数字用户线路 (DSL)电缆网络典型家庭网络的接入机构(企业)接入网络 (Ethernet)无线接入网络 网络核心Internet结构最后 计算机网络的结构…

scratch保护环境 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch保护环境 一、题目要求 1、准备工作 2、功能实现 二、案例分析

panads操作excel

panads简介 pandas是基于Numpy创建的Python包,内置了大量标准函数,能够高效地解决数据分析数据处理和分析任务,pandas支持多种文件的操作,比如Excel,csv,json,txt 文件等,读取文件之…

android studio 我遇到的Task :app:compileDebugJavaWithJavac FAILED问题及解决过程

前几天一个网友在学习我的一个小项目的时候,发现无法达到目的,在帮他解决问题的过程中发现他用的是最近的giraffe版本的as,我用的是老版本,没办法打开他的项目,没办法只能卸载我的as,安装了最近版的diraffe…

华为云云耀云服务器L实例评测 | 实例使用教学之综合导览

华为云云耀云服务器L实例评测 | 实例使用教学之综合导览 实例使用教学实例场景体验实例性能评测实例评测使用介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云耀云…

3、TCP状态

TCP状态 1、TCP通信时序 三次握手成功后,服务器和客户端进入了状态ESTABLISHED 当处于Time_WAIT状态后,不会马上变成CLOSE状态,会经历2MSL(约40秒),之后才会进入CLOSE状态。 总结: 主动发起…

NodeJs中使用JSONP和Cors实现跨域

跨域是为了解决浏览器请求域名,协议,端口不同的接口,相同的接口是不需要实现跨域的。 1.使用JSONP格式实现跨域 实现步骤 动态创建一个script标签 src指向接口的地址 定义一个函数和后端调用的函数名一样 实现代码 -- 在nodejs中使用http内…

单目标应用:墨西哥蝾螈优化算法(Mexican Axolotl Optimization,MAO)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、墨西哥蝾螈优化算法MAO 墨西哥蝾螈优化算法(Mexican Axolotl Optimization,MAO)由Yenny Villuendas-Rey 1等人于2021…

棱镜七彩参编!开源领域4项团体标准正式发布

近日,中电标2023年第27号团体标准公告正式发布,《T/CESA 1270.2-2023 信息技术 开源治理 第 2 部分:企业治理评估模型》、《T/CESA 1270.3-2023 信息技术 开源治理 第 3 部分:社区治理框架》、《T/CESA 1270.5-2023 信息技术 开源…

FastAPI学习-27 使用@app.api_route() 设置多种请求方式

对同一个访问函数设置多个http 请求方式 api_route 使用 使用methods 参数设置请求方式 from fastapi import FastAPIapp FastAPI() app.api_route(/demo/b, methods[get, post]) async def demo2(): return {"msg": "demo2 success"}判断请求方式…

IDEA 2023.2.2图文安装教程及下载

IDE 系列的第二个年度更新现已发布,涵盖 IntelliJ IDEA、WebStorm、PyCharm、DataGrip、GoLand、DataSpell 以及 All Products Pack 订阅中包含的其他工具。该版本还包括多项用户体验增强功能,例如 Search Everywhere(随处搜索)中…

上个月Balada Injector攻击中有超过17,000个WordPress网站被黑

导语 最近,一场名为Balada Injector的攻击活动引起了广泛关注。这次攻击以WordPress网站为目标,据统计,有超过17,000个网站受到了感染。在本文中,我们将详细介绍这次攻击的概述、攻击手段以及如何保护自己的网站。 攻击概述 Balad…