超精密工件小孔几何尺寸测量:自动化解决方案

下载链接:(最新版本)超精密工件小孔几何尺寸测量:自动化解决方案python脚本代码,可直接运行,内包含测试数据,亲测好用资源-CSDN文库

在现代制造业中,超精密工件的质量控制至关重要,尤其是对小孔几何尺寸的精确测量。无论是航空航天、医疗器械还是电子元器件,小孔的尺寸和位置精度直接影响到产品的性能和可靠性。然而,传统的手动测量方法不仅耗时耗力,还容易引入人为误差。那么,有没有一种高效、准确的自动化解决方案呢?

本文将介绍一种基于 OpenCV 和 Python 的超精密工件小孔几何尺寸测量工具。通过该工具,您可以快速检测工件图像中的小孔,并自动计算小孔的几何尺寸(如圆心位置、直径等),同时生成带有标注的测量结果图像。无论是批量处理还是单张图像分析,该工具都能轻松应对。


工具亮点

  • 自动化检测:无需手动标注,工具自动识别图像中的小孔。

  • 高精度测量:支持像素到实际尺寸的转换,测量结果精确到毫米级别。

  • 可视化标注:自动在图像上标注小孔位置,并显示圆心到边缘的距离。

  • 批量处理:支持对文件夹中的多张图像进行批量处理,节省时间。

  • 开源免费:基于 OpenCV 和 Python,代码完全开源,可自由修改和扩展。


工具原理

该工具的核心原理是通过 图像处理 和 连通域分析 来实现小孔的自动检测与测量。以下是主要步骤的详细说明:

1. 图像预处理

首先,工具会将输入的彩色图像转换为灰度图像,以便后续处理。接着,通过二值化处理将图像中的小孔区域与背景分离。二值化处理的关键在于选择合适的阈值,以确保小孔区域能够被准确提取。

2. 连通域分析

通过 OpenCV 的 connectedComponentsWithStats 函数,工具会对二值化后的图像进行连通域分析。连通域分析能够识别图像中的所有独立区域(即小孔),并统计每个区域的面积、中心点等信息。

3. 筛选小孔

在实际应用中,图像中可能存在噪声或其他无关区域。因此,工具会根据预设的面积范围(例如 30x30 到 100x100 像素)筛选出符合条件的小孔,排除不符合要求的区域。

4. 几何测量

对于每个检测到的小孔,工具会计算其圆心位置,并测量圆心到图像左边和上边的距离。通过像素与实际尺寸的转换系数(例如 0.01 毫米/像素),工具能够将像素距离转换为实际尺寸。

5. 结果可视化

最后,工具会在原始图像上标注出小孔的位置,并绘制距离线和尺寸标注。标注结果以图像形式保存,方便用户查看和分析。


如何使用

1. 安装依赖

首先,确保您的电脑上安装了 Python 和 OpenCV。如果没有安装,可以通过以下命令安装 OpenCV:

bash

复制

pip install opencv-python

2. 准备图像

在项目根目录下创建一个名为 images 的文件夹,并将需要测量的工件图像放入其中。支持的图像格式包括 .jpg.jpeg 和 .png

3. 运行代码

以下是核心代码片段:

python

复制

import cv2
import numpy as np
import os# 定义参数
font_scale = 1.5  # 标注字体大小
pixel_scale = 0.01  # 每个像素代表的毫米数
input_folder = 'images'  # 输入图片所在文件夹
output_folder = 'output'  # 输出结果保存的文件夹# 创建输出文件夹(如果不存在)
if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历输入文件夹中的所有图片
for filename in os.listdir(input_folder):if filename.endswith(('.jpg', '.jpeg', '.png')):# 读取图像并预处理image_path = os.path.join(input_folder, filename)image = cv2.imread(image_path)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)_, binary = cv2.threshold(gray, 90, 255, cv2.THRESH_BINARY)inverted_binary = cv2.bitwise_not(binary)# 连通域分析num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(inverted_binary, connectivity=8)# 筛选小孔并标注small_holes = [i for i in range(1, num_labels) if 30 * 30 < stats[i, cv2.CC_STAT_AREA] < 100 * 100]marked_image = image.copy()for hole in small_holes:centroid = centroids[hole]left_distance_pixel = int(centroid[0])top_distance_pixel = int(centroid[1])left_distance_mm = left_distance_pixel * pixel_scaletop_distance_mm = top_distance_pixel * pixel_scale# 绘制标注marked_image[labels == hole] = [0, 0, 255]cv2.line(marked_image, (0, top_distance_pixel), (left_distance_pixel, top_distance_pixel), (0, 255, 0), 2)cv2.putText(marked_image, f'{left_distance_mm:.2f}mm', (left_distance_pixel // 2, top_distance_pixel - 10),cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 255, 0), 2)cv2.line(marked_image, (left_distance_pixel, 0), (left_distance_pixel, top_distance_pixel), (0, 255, 0), 2)cv2.putText(marked_image, f'{top_distance_mm:.2f}mm', (left_distance_pixel + 10, top_distance_pixel // 2),cv2.FONT_HERSHEY_SIMPLEX, font_scale, (0, 255, 0), 2)cv2.circle(marked_image, (left_distance_pixel, top_distance_pixel), 5, (0, 255, 0), -1)# 保存结果output_path = os.path.join(output_folder, filename)cv2.imwrite(output_path, marked_image)

4. 查看结果

运行完成后,测量结果图像将保存在 output 文件夹中。每张图像都会标注出小孔的位置和几何尺寸。


示例效果

以下是一个测量结果的示例:

示例图像

在图像中:

  • 红色区域表示检测到的小孔。

  • 绿色线条表示圆心到左边和上边的距离。

  • 标注的数字为实际距离(单位:毫米)。


适用场景

  • 精密制造:用于测量微小工件的孔径和位置。

  • 质量控制:快速检测批量产品中的小孔尺寸是否符合标准。

  • 科研实验:为材料科学、微纳加工等领域提供精确的测量工具。


总结

通过本文介绍的工具,您可以轻松实现超精密工件小孔几何尺寸的自动化测量。无论是工业应用还是科研实验,该工具都能为您提供高效、准确的解决方案。赶紧下载代码,尝试一下吧!

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

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

相关文章

重生之我在学Vue--第11天 Vue 3 高级特性

重生之我在学Vue–第11天 Vue 3 高级特性 文章目录 重生之我在学Vue--第11天 Vue 3 高级特性前言一、Teleport&#xff1a;打破组件层级的瞬移术1. 什么是Teleport&#xff1f;2. 核心用法3. 实战技巧 二、Suspense&#xff1a;异步组件的优雅过渡1. 为什么需要Suspense&#x…

MCU的工作原理:嵌入式系统的控制核心

MCU的工作原理可以概括为以下几个步骤&#xff1a; 1. 初始化 上电后&#xff0c;MCU从Flash存储器中加载程序代码&#xff0c;并初始化外设和寄存器。 2. 任务执行 根据程序逻辑&#xff0c;MCU执行数据处理、外设控制和通信等任务。通过中断系统实时响应外部事件。 3. 低…

游戏引擎学习第158天

回顾和今天的计划 我们在这里会实时编码一个完整的游戏&#xff0c;没有使用引擎或库&#xff0c;一切都由我们自己做所有的编程工作&#xff0c;游戏中的每一部分&#xff0c;无论需要做什么&#xff0c;我们都亲自实现&#xff0c;并展示如何完成这些任务。今天&#xff0c;…

k8s基础架构介绍

k8s基础架构介绍 k8s 是对容器进行编排的一种工具。通过k8s可以实现对容器的编排、部署、更新等 学习k8s之前&#xff0c;先了解相关的一些使用和配置k8s的一些工具。 k8s的常用工具 在 kubernetes 中&#xff0c;主要有三个日常使用的工具&#xff0c;这些工具使用 kube 前…

兴达易控Profinet 转 ModbusTCP跨网段通信模块

Profinet 转 ModbusTCP/跨网段通信模块 Profinet转ModbusTCP/跨网段通信模块&#xff0c;作为现代工业自动化系统中不可或缺的重要组件&#xff0c;正日益受到广泛关注和应用。 这种模块的核心功能是将Profinet网络协议转换为Modbus TCP协议&#xff0c;实现不同网络之间的无缝…

创新技术引领软件供应链安全,助力数字中国建设

编者按 随着数字化转型的加速&#xff0c;针对软件供应链的攻击事件呈快速增长态势&#xff0c;目前已成为网络空间安全的焦点。如何将安全嵌入到软件开发到运营的全流程&#xff0c;实现防护技术的自动化、一体化、智能化&#xff0c;成为技术领域追逐的热点。 悬镜安全作为…

某大厂自动化工程师面试题

一些大厂的自动化工程师面试题汇总: 基础知识类 请解释什么是PLC(可编程逻辑控制器)?什么是PID控制?它在自动化系统中的作用是什么?请描述一下工业4.0的基本概念。编程与控制系统类 你熟悉哪些PLC编程语言?请举例说明。如何在SCADA系统中实现数据采集和监控?请解释一下…

Java 大视界 -- 基于 Java 的大数据分布式数据库架构设计与实践(125)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

cursor中使用prettier-code formatter插件方法

cursor的"扩展"中搜索"prettier-code formatter"&#xff0c;然后安装 点击cursor编辑器右上角“更多操作”&#xff0c;然后打开“配置编辑器” 按照图片进行操作&#xff0c;进入到editor在editor中&#xff0c;找“格式化“&#xff0c;把Format On Sav…

OSPF-2 邻接建立关系

上一期我们说了OSPF的邻居建立关系以及OSPF邻居关系建立中建立失败的因素以及相关实验案例 这一期我们来说说OSPF的邻接关系建立时需要交互哪些报文以及失败因素及原因和相关实验案例 一、概述 在运行了OSPF的网络当中为了交互链路状态信息和路由信息,互相之间需要建立邻接关…

问deepseek: 如何处理CGNS网格文件里,多个zone之间的链接数据

在CGNS文件中&#xff0c;多个zone之间的链接数据通常通过ZoneGridConnectivity节点处理。以下是处理步骤&#xff1a; 1. 确定链接类型 首先&#xff0c;明确zone之间的链接类型&#xff0c;常见的有&#xff1a; 1-to-1连接&#xff1a;两个zone的边界点一一对应。** Over…

什么是SEO泛目(什么是SEO站群)

SEO泛目录与站群策略&#xff1a;提升网站优化的双剑合璧 在当今竞争激烈的互联网环境中&#xff0c;SEO优化已成为企业提升网站流量和品牌曝光的重要手段。而在众多SEO策略中&#xff0c;泛目录和站群因其独特的技术优势和效果&#xff0c;逐渐成为SEO从业者的热门选择。本文…

conda、pip、npm、yarn换国内源

conda源 # conda源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes# 换回conda的默认源 conda config --remove-key channels pip源 # pip源# 永久换源 pip config set global.index-url https://…

Jetson Orin NX jupyter lab的安装和使用

主要是为了梳理一下整个过程&#xff0c;其实步骤很简单&#xff0c;但容易出错。 注意&#xff0c;实际只有两个文件需要写入&#xff0c;一个是jupyter_lab_config.py&#xff0c;一个是jupyter.service。 配置文件的名字要写对&#xff0c;如果总是copy网上的代码&#xff0…

【清华大学第七版】DeepSeek赋能家庭教育的实操案例(批改作文+辅助语文/数学/科学学习+制定学习计划)

我用夸克网盘分享了「DeepSeek完整资料合集」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan.quark.cn/s/621259e4af15 近日&#xff0c;清华大学发布了《…

hive 中的各种参数,一般在哪里修改

在实际工作中&#xff0c;Hive 参数的配置和修改可以通过多种方式进行&#xff0c;具体取决于使用场景和需求。以下是常见的参数配置方式和适用场景&#xff1a; 1. 在 Hive CLI 或 Beeline 中临时设置 适用场景: 临时修改参数&#xff0c;仅对当前会话生效。 使用方法: 在 Hi…

Opencv之掩码实现图片抠图

掩码实现图片抠图 目录 掩码实现图片抠图1 掩码1.1 概念1.2 创建掩码1.3抠图思路 2 代码测试 1 掩码 1.1 概念 掩码&#xff08;Mask&#xff09;是一种用于指定图像处理操作区域的工具。掩码通常是一个与图像尺寸相同的二值图像&#xff0c;其中像素值为0表示不处理&#xff…

QT编程之JSON处理

一、核心类库及功能 Qt 提供了一套完整的 JSON 处理类库&#xff08;位于 QtCore 模块&#xff09;&#xff0c;支持解析和生成 JSON 数据&#xff1a; ‌QJsonDocument‌&#xff1a;表示完整的 JSON 文档&#xff0c;支持从 QJsonObject 或 QJsonArray 初始化‌。‌QJsonOb…

在虚拟环境里面配置Linux系统

Linux系统有很多版本&#xff0c;常用的有Ubantu乌班图&#xff0c;和CentOS 不同的版本在使用的时候&#xff0c;有部分执行方式的不同 安装的流程都一样 首先&#xff0c;想要安装Ubantu&#xff0c;要去它的官网&#xff0c;找下载连接&#xff0c;然后下载iso后缀的安装…

CentOS7下安装MongoDB

步骤 1&#xff1a;创建 MongoDB Yum 仓库文件 你需要创建一个 MongoDB 的 Yum 仓库配置文件&#xff0c;以便从官方源下载 MongoDB。打开终端并使用以下命令创建并编辑该文件&#xff1a; sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo 在打开的文件中&#xff0c;输入以下…