超精密工件小孔幾何尺寸測量:自動化解決方案

下載鏈接:(最新版本)超精密工件小孔幾何尺寸測量:自動化解決方案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.pswp.cn/pingmian/72348.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72348.shtml
英文地址,請注明出處:http://en.pswp.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;輸入以下…