基于yolov5的双目鱼体长度检测

news2024/11/24 11:53:16

前言

  在水产养殖行业中,鱼体长度是衡量鱼类品质和成熟度的重要指标。然而,传统的鱼体长度测量方法需要手动测量,不仅耗时耗力还容易出现误差。正好最近做了一个基于双目视觉的鱼体检测项目,在这里和大家分享以下思路。

步骤

第一步:标定

  在实际应用中,摄像头会产生畸变,因此我们需要对摄像头进行标定。首先需要准备一块棋盘,将其放在摄像头的视野范围内,然后用代码控制摄像头获取多张图片,并且使用OpenCV库的calibrateCamera函数进行标定。

  对于摄像头获取的图像,我们需要去除畸变。通过OpenCV库中的undistort函数实现。接下来,我们需要进行极线校正,以获得两个校准好的图像。在此过程中,我们需要在左右图像之间进行极线匹配和摄像头校准。这里我们使用OpenCV中的stereoRectifyUncalibrated函数实现,它能够自动地计算出左右图像之间的极线匹配关系。

第二步:检测目标

  通过yolov5训练我们想要识别的鱼体目标,然后进行目标检测,获得检测框的位置。
  针对检测框内的目标进行图像处理,获取鱼体的头和尾的图像坐标。

第三步:计算鱼体长度

  使用双目视觉中的三角测量方法计算出鱼头和尾在相机坐标系中的三维坐标。最后,我们使用欧氏距离计算出鱼体长度。

Z1 = B[0] * F / result[0][1]
X1 = (u1 - cx) * Z1 / fx1
Y1 = (v1 - cy) * Z1 / fy1

u2 = result[1][0][0]
v2 = result[1][0][1]

Z2 = B[0] * F / result[1][1]
X2 = (u2 - cx) * Z2 / fx1
Y2 = (v2 - cy) * Z2 / fy1

distance = np.sqrt((X1 - X2) ** 2 + (Y1 - Y2) ** 2 + (Z1 - Z2) ** 2)

成果展示

在这里插入图片描述

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

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

相关文章

跨境电商环境搭建和买家账号培养的关键考虑因素

作为跨境电商环境搭建和买家账号培养的专业技术开发人员,我深知在亚马逊、速卖通、阿里国际、速卖通、美客多、shopee、Lazada、ebay、Temu等平台上运营的卖家面临的挑战 其中,补单是一项关键的工作,它能帮助卖家增加商品列表和评价数量&…

这个 冒泡排序详解过程 我能吹一辈子!!!

文章目录 冒泡排序概念冒泡排序算法思路冒泡排序代码实现冒泡排序优化 冒泡排序概念 冒泡排序是比较基础的排序算法之一,其思想是相邻的元素两两比较,较大的数下沉,较小的数冒起来,这样一趟比较下来,最大(小)值就会排列…

ES2020新语法:可选链操作符

目录 一、前言 二、案例 三、方法一:AND运算符 四、方法二:可选链操作符( ?. ) 1. 语法 2. 可选链与函数调用 3. 处理可选的回调函数或事件处理器 4.可选链和表达式 5.可选链访问数组元素 6.使用空值合并操作符 一、前言 今天看一个实习生写的…

Linux高级---configmap和secret

文章目录 一、ConfigMap1、介绍2、创建configmap3、使用configmap4、引入环境变量的另一种方式 二、Secret1、介绍2、创建secret3、使用secret4、引入环境变量的另一种方式 一、ConfigMap 1、介绍 ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使…

chatgpt赋能python:Python指定日期处理方法,从入门到实践

Python指定日期处理方法,从入门到实践 Python是一种高级编程语言,因其简单易学和功能强大而深受开发者喜爱。在日常工作中,我们经常需要对日期进行处理和计算。Python提供了丰富的日期和时间处理库,因此我们可以轻松地进行日期处…

el-table分页保留勾选的数据

1、目标效果 代码全部写在下方App.vue中&#xff0c;复制粘贴即可运行 目前选中了5条数据 点击下方切换分页&#xff0c;选中的数据消失了 2、原理 &#xff08;1&#xff09;el-table复选框&#xff0c;用一个变量数组selectedRow:[ ] 监听选择了哪些数据 <el-table-colu…

【Python】Requests库基本使用

知识目录 一、写在前面✨二、Requests库三、接口调用四、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; 今天跟大家分享的文章是 Python中Requests库在爬虫和自动化中的使用 &#xff0c;希望能帮助到…

这10种神级性能优化手段

引言&#xff1a;取与舍 软件设计开发某种意义上是“取”与“舍”的艺术。 关于性能方面&#xff0c;就像建筑设计成抗震9度需要额外的成本一样&#xff0c;高性能软件系统也意味着更高的实现成本&#xff0c;有时候与其他质量属性甚至会冲突&#xff0c;比如安全性、可扩展性…

Scikit-LLM:将大语言模型整合进Sklearn的工作流

我们以前介绍过Pandas和ChaGPT整合&#xff0c;这样可以不了解Pandas的情况下对DataFrame进行操作。现在又有人开源了Scikit-LLM&#xff0c;它结合了强大的语言模型&#xff0c;如ChatGPT和scikit-learn。但这个并不是让我们自动化scikit-learn&#xff0c;而是将scikit-learn…

数据库系统的结构

数据库模式基本概念 1.型与值 型&#xff1a;对某一类数据的结构和属性的说明。值&#xff1a;型的具体赋值。 2.模式和实例 模式&#xff1a; 数据库中全体数据的逻辑结构和特征的描述。简单来说就是数据的定义和描述。模式是元数据&#xff0c;数据是变化的&#xff0c;模…

chatgpt赋能python:用Python扫码——提高SEO的新方法

用Python扫码——提高SEO的新方法 作为一种快捷方便的支付方式&#xff0c;扫码支付已经得到广泛的应用。而越来越多的企业也开始将其应用于营销推广中。但除了付款和兑换优惠券之外&#xff0c;扫码还有一个很实用的用途——SEO。 什么是扫码SEO&#xff1f; 扫码SEO是一种…

全面理解链表数据结构:各种节点操作、做题技巧,易错点分析与题目清单(C++代码示例,不断更新)

什么是链表 链表是一种线性数据结构&#xff0c;它包含的元素并不是物理上连续的&#xff0c;而是通过指针进行连接。链表中的每个元素通常由一个节点表示&#xff0c;每个节点包含一个数据元素和一个或多个链接&#xff08;指针&#xff09;。 链表的主要类型包括&#xff1a;…

全志V3S嵌入式驱动开发(系统image创建和烧入)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面几篇文章&#xff0c;我们说到了怎么下载编译器、怎么编译uboot、怎么编译kernel和根文件系统。这样一步一步下来&#xff0c;虽然繁琐&#x…

chatgpt赋能python:Python按列排序详解

Python按列排序详解 在数据处理中&#xff0c;按列排序是一个非常常见的操作。Python作为一门流行的编程语言&#xff0c;针对按列排序操作也提供了丰富的工具和库。本篇文章将介绍Python按列排序的方法和实例&#xff0c;并为读者提供一些有用的技巧。 为什么要按列排序&…

chatgpt赋能python:Python扫描二维码:优化SEO的有效方法

Python扫描二维码&#xff1a;优化SEO的有效方法 在当今数字化时代&#xff0c;二维码是一种无处不在的技术&#xff0c;用于链接到网站&#xff0c;推广产品等等。然而&#xff0c;很少有人意识到&#xff0c;优化二维码可以提高网站的搜索引擎优化&#xff08;SEO&#xff0…

MySQL运维篇(一)

一.日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 错误日志是默认开启的…

GaussDB内存过载分析

问题现象 数据库进程内存占比较高 长时间占比较高 观察监控平台内存占用的变化曲线&#xff0c;无论当前数据库是否有业务在运行&#xff0c;数据库进程内存占总机器内存的比例长时间处于较高状态&#xff0c;且不下降。执行作业期间占比较高 数据库进程在没有业务执行时&…

chatgpt赋能python:Python文件操作-查找指定内容

Python 文件操作 - 查找指定内容 在日常开发和数据处理中&#xff0c;我们经常需要查找文件中指定的内容。Python 提供了简单而强大的文件操作函数和模块&#xff0c;使得文件查找操作变得简单和高效。本文将介绍如何使用 Python 查找指定内容的方法。 搜索整个文件 最基本的…

2023年最好的10+个WordPress表格插件

WordPress表格插件可让您简洁明了地呈现数据。借助交互式表格&#xff0c;访问者可以根据自己的喜好轻松查看、过滤和排序您的数据&#xff0c;从而提升您网站的用户体验。 但是&#xff0c;询问任何尝试从头开始构建表格的站点所有者&#xff0c;他们会报告说体验可能是一个挑…

Rust每日一练(Leetday0012) 首末位置、插入位置、有效数独

目录 34. 查找元素的首末位置 Find-first-and-last-position-of-element-in-sorted-array &#x1f31f;&#x1f31f; 35. 搜索插入位置 Search Insert Position &#x1f31f; 36. 有效的数独 Valid Sudoku &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏…