基于opencv的指针式仪表的识别与读数

news2024/11/18 8:12:39

对于指针式仪表的识别与读数,可以通过以下步骤使用OpenCV实现

  • 读取图像:使用cv2.imread()函数读取要处理的仪表图像。
    在这里插入图片描述

  • 灰度转换:使用cv2.cvtColor()函数将彩色图像转换为灰度图像。这是因为灰度图像只有一个通道,便于后续的处理。

  • 平滑滤波:为了去除噪声,可以使用中值滤波或高斯滤波。中值滤波通过将每个像素替换为其邻域像素的中值来消除噪声。高斯滤波则是通过计算像素周围邻域像素的加权平均值来平滑图像。你可以根据实际情况选择适合的滤波方法,例如使用cv2.medianBlur()进行中值滤波或使用cv2.GaussianBlur()进行高斯滤波。对于指针式仪表的识别与读数,可以通过以下步骤使用OpenCV实现:

  • 读取图像:使用cv2.imread()函数读取要处理的仪表图像。

  • 灰度转换:使用cv2.cvtColor()函数将彩色图像转换为灰度图像。这是因为灰度图像只有一个通道,便于后续的处理。
    在这里插入图片描述

  • 平滑滤波:为了去除噪声,可以使用中值滤波或高斯滤波。中值滤波通过将每个像素替换为其邻域像素的中值来消除噪声。高斯滤波则是通过计算像素周围邻域像素的加权平均值来平滑图像。你可以根据实际情况选择适合的滤波方法,例如使用cv2.medianBlur()进行中值滤波或使用cv2.GaussianBlur()进行高斯滤波。

  • 边缘检测:使用Canny边缘检测算法来检测图像中的边缘。Canny边缘检测算法首先使用Sobel算子计算图像的梯度强度和方向,然后通过非最大抑制和双阈值处理来提取出真正的边缘。使用cv2.Canny()函数可以方便地进行Canny边缘检测,你可以根据实际情况调整阈值参数。

  • 轮廓提取:使用cv2.findContours()函数来提取边缘图像中的轮廓。轮廓是连续的曲线,可以用来表示物体的形状。通过设置适当的参数,可以选择性地提取出仪表盘的指针轮廓。

  • 指针识别:对于仪表指针,通常可以通过以下特征进行识别:

  • 面积大小:指针通常具有相对较大的面积。

  • 形状:指针通常是细长的形状,可以通过检查轮廓的形状来判断是否为指针。

  • 位置:指针通常位于仪表盘中心附近。

    可以遍历提取到的轮廓,根据以上特征来筛选出指针轮廓。

  • 读数计算:对于选定的指针轮廓,可以通过计算指针与仪表盘中心之间的夹角来得到仪表的读数。可以使用cv2.minEnclosingCircle()函数找到指针的中心点,然后计算指针中心点与仪表盘中心点之间的夹角。

以上就是通过OpenCV对指针式仪表进行读数的一般步骤。根据实际情况,你可能需要调整参数、采取不同的滤波方法或添加其他处理步骤来适应不同的仪表图像。
在这里插入图片描述

  1. 边缘检测:使用Canny边缘检测算法来检测图像中的边缘。Canny边缘检测算法首先使用Sobel算子计算图像的梯度强度和方向,然后通过非最大抑制和双阈值处理来提取出真正的边缘。使用cv2.Canny()函数可以方便地进行Canny边缘检测,你可以根据实际情况调整阈值参数。

  2. 轮廓提取:使用cv2.findContours()函数来提取边缘图像中的轮廓。轮廓是连续的曲线,可以用来表示物体的形状。通过设置适当的参数,可以选择性地提取出仪表盘的指针轮廓。

  3. 指针识别:对于仪表指针,通常可以通过以下特征进行识别:

    • 面积大小:指针通常具有相对较大的面积。
    • 形状:指针通常是细长的形状,可以通过检查轮廓的形状来判断是否为指针。
    • 位置:指针通常位于仪表盘中心附近。

    可以遍历提取到的轮廓,根据以上特征来筛选出指针轮廓。

  4. 读数计算:对于选定的指针轮廓,可以通过计算指针与仪表盘中心之间的夹角来得到仪表的读数。可以使用cv2.minEnclosingCircle()函数找到指针的中心点,然后计算指针中心点与仪表盘中心点之间的夹角。

结果展示

可以看出下图给出了角度值,通过圆盘的固定尺度的丈量,就可以自动化推理出,指数是多少。

在这里插入图片描述

代码与总结

要基于OpenCV对指针式仪表进行读数,可以采用以下步骤:

  • 读取图像:使用cv2.imread()函数读取图像文件,或从摄像头中实时获取图像。
  • 图像预处理:对图像进行预处理,以便提取出仪表盘的指针和刻度线等关键部分。例如,可以使用cv2.cvtColor()函数将图像转换为灰度图像,然后使用cv2.GaussianBlur()函数进行高斯模糊,以去除噪声。
  • 提取特征:使用OpenCV的特征提取算法,如Canny边缘检测、Hough变换等,找到仪表盘的指针和刻度线等关键部分。
  • 计算角度:通过计算指针与刻度线之间的夹角,即可得到仪表的读数。可以使用cv2.minEnclosingCircle()函数找到指针的中心点,然后计算指针中心点与仪表盘中心点之间的夹角。
  • 显示结果:将读数显示在图像上,并将图像显示出来或保存为文本
import cv2
import numpy as np

# 读取图像
img = cv2.imread('meter.jpg')

# 图像预处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)

# 提取特征
edges = cv2.Canny(blur, 50, 200, apertureSize=3)
lines = cv2.HoughLines(edges, 1, np.pi/180, 100)

# 找到指针和刻度线
for line in lines:
    rho, theta = line[0]
    if theta < np.pi/4 or theta > 3*np.pi/4:
        x0 = np.cos(theta) * rho
        y0 = np.sin(theta) * rho
        pt1 = (int(x0 + 1000*(-np.sin(theta))), int(y0 + 1000*np.cos(theta)))
        pt2 = (int(x0 - 1000*(-np.sin(theta))), int(y0 - 1000*np.cos(theta)))
        cv2.line(img, pt1, pt2, (0, 0, 255), 3)

# 计算角度
center = (img.shape[1]//2, img.shape[0]//2)

最后

#联系qq1309399183

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

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

相关文章

告别信息差!奇点云SimbaMetric打破协作壁垒,为指标管理提效

谈到指标&#xff0c;相信每家企业都遇到过以下问题&#xff1a; 对指标的定义不清晰&#xff0c;必须跨部门反复沟通&#xff0c;新建、修改指标的成本高&#xff1b; 各种指标逻辑近似&#xff0c;但没有复用&#xff0c;数据团队有大量重复工作&#xff1b; 由于没有生…

argparse库

引言 argparse-------python用于解析命令行参数的标准模块 快速上手 import argparse parser argparse.ArgumentParser() 创建一个命令行解析器对象 parser.add_argument() 向解析器…

PHP留言板实现

完整教程PHP留言板 登陆界面 一个初学者的留言板&#xff08;登录和注册&#xff09;_php留言板登录注册-CSDN博客 留言板功能介绍 百度网盘 请输入提取码 进入百度网盘后&#xff0c;输入提取码&#xff1a;knxt&#xff0c;即可下载项目素材和游客访问页面的模板文件。 &…

TOP 10 屏幕录制软件工具,可帮您轻松录制视频!

随着越来越多的人远程工作和学习&#xff0c;对可靠、高效的屏幕录制工具的需求变得越来越重要。屏幕录制已成为电子学习、游戏和视频创作的重要组成部分。然而&#xff0c;有这么多可用的屏幕录制工具&#xff0c;选择合适的工具可能具有挑战性。为了帮助您节省搜索时间和精力…

权限系统模型:RBAC模型与ABAC模型

权限系统 基于角色的访问控制&#xff08;RBAC&#xff09; 基于角色的控制访问&#xff08;Role-Based Access Control&#xff0c;简称 RBAC&#xff09;&#xff0c;即&#xff1a;给予该账号角色&#xff08;Role&#xff09;&#xff0c;授权角色对应的相关权限&#xf…

0基础学习VR全景平台篇第137篇:720VR全景,DJI无人机遥控器调参

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 这节课以御2为例 介绍的是无人机调参 步骤一&#xff1a;下载DJI Go 4并注册账号 步骤二&#xff1a;拿下遥杆并装好&#xff0c;展开遥控天线。将无人机与遥控器相连&#xff…

什么是云服务器ECS - 云服务器 ECS - 阿里云

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云百科aliyunbai…

ChatGPT、Claude等聚合平台Poe,获7500万美元融资

1月11日&#xff0c;生成式AI聊天助手聚合平台Poe&#xff0c;获得7500万美元&#xff08;约5.3亿美元&#xff09;&#xff0c;估值5亿美元&#xff08;约35.8亿元&#xff09;。本次由 Andreessen Horowitz、a16z等投资。 Poe几乎聚合、镜像了目前市面上所有知名的文本、图片…

Easticsearch性能优化之硬件优化

Easticsearch性能优化之硬件优化 一、CPU配置二、内存配置1、内存配置总体方针2、内存实际分配3、禁止swap4、GC设置 三、IO&#xff08;磁盘&#xff09; 对于性能优化&#xff0c;升级硬件设备配置一直都是提高服务能力最快速有效的手段。硬件优化主要可以从CPU、内存、存储设…

数字孪生+可视化技术 构建智慧新能源汽车充电站监管平台

前言 充电基础设施为电动汽车提供充换电服务&#xff0c;是重要的交通能源融合类基础设施。近年来&#xff0c;随着新能源汽车产业快速发展&#xff0c;我国充电基础设施持续增长&#xff0c;已建成世界上数量最多、服务范围最广、品种类型最全的充电基础设施体系。着眼未来新…

【Matlab】在Matlab中安装优化工具yalmip的方法

最近博主想做一些关于多目标优化的问题&#xff0c;因为之前对Matlab有一定经验&#xff0c;所以直接在网上查找了如何在Matlab上实现多目标优化的文献&#xff0c;看到有人提到了yamip&#xff0c;于是博主就试着在Matlab中安装yamip&#xff0c;将其中遇到的问题和一些经验和…

C++力扣题目404--左叶子之和

给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24 思路 首先要注意是判断左叶子&#xff0…

商业定位,1元平价商业咨询:豪威尔咨询!平价咨询。

在做生意之前&#xff0c;就需要对企业整体进行一完整的商业定位&#xff0c;才能让商业定位带动企业进行飞速发展。 所以&#xff0c;包含商业定位的有效工作内容就显得极为重要&#xff0c;今天&#xff0c;小编特地为大家整理出了商业定位所需要的筹备的工作&#xff0c;如下…

#mysql 8.0 踩坑日记

事情发生在&#xff0c;修改一个已有功能的时候&#xff0c;正常的参数传递进去接口异常了。查看日志报的 Column date cannot be null 。因为是一直未修改过的功能&#xff0c;首先排除了程序代码问题&#xff0c;首先想到是不是升级过程序的jar包版本&#xff0c;检查下来发…

一键转换,创新无限:将HTML轻松转化为PDF!

在数字时代&#xff0c;HTML与PDF已成为信息传递的两大主流格式。然而&#xff0c;在这两者之间转换常常让人感到困扰。现在&#xff0c;有了我们的创新工具&#xff0c;您只需轻点一下&#xff0c;即可一键将HTML转化为PDF&#xff01; 首先&#xff0c;我们要进入首助编辑高…

《SPSS统计学基础与实证研究应用精解》视频讲解:SPSS依托统计学处理数据的应用场景

《SPSS统计学基础与实证研究应用精解》1.4 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解1.4节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。本书旨在手把手教会使…

20/100 删除链表的倒数第 N 个结点 21/100 有效的括号 22/100 合并两个有序列表

20/100 删除链表的倒数第 N 个结点 题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 题解&#xff1a; 方法1&#xff1a;第一次完整遍历一遍得到长度&#xff0c;第二次遍历到倒数第n个数据前一个&#xff0c;进…

矩阵起源携手深智城入选中国信通院“星河”案例

近日&#xff0c;由中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会&#xff08;CCSA TC601&#xff09;共同组织的 2023 大数据“星河&#xff08;Galaxy&#xff09;”案例征集活动评选结果现已公示。案例征集自9月启动以来&#xff0c;受到了业界广泛关注和…

图文看懂Android的Matrix原理

Matrix结构 在Android开发中&#xff0c;矩阵是一个非常强大且有趣的工具。位于图形库中&#xff0c;android.graphics.Matrix 是一个 33 的 float 矩阵&#xff0c;其主要作用是坐标变换。 它的结构大概是这样的&#xff1a; 其中每个位置的数值作用和其名称所代表的的含义是…

基于Java SSM框架实现雁门关风景区宣传网站项目【项目源码】计算机毕业设计

基于java的SSM框架实现雁门关风景区宣传网站演示 Java技术 Java技术它是一个容易让人学会和使用的一门服务器语言。它在编程的过程当中只需要很少的知识就能建立起一个真正的交互站点。对于这个教程来说它并不需要你完全去了解这种语言&#xff0c;只要能快速融入web站点就可以…