VisionPro尺寸測量代碼

  • 使用 康耐視 VisionPro 在 C# 環(huán)境中進行尺寸測量和缺陷檢測是工業(yè)視覺領(lǐng)域非常經(jīng)典和強大的組合。

一、核心概念與開發(fā)模式

VisionPro 提供兩種主要的開發(fā)模式,理解它們至關(guān)重要:

1、QuickBuild(圖形化配置界面):

  • 用于快速搭建和調(diào)試視覺工具鏈(ToolBlock)。你通過拖拽工具、連線、配置參數(shù)來設(shè)計檢測流程,無需編寫代碼。

  • 優(yōu)點:調(diào)試直觀,算法參數(shù)調(diào)整方便,非常適合原型驗證和工藝摸索。

2、C# .NET API(代碼集成):

  • 用于將你在 QuickBuild 中調(diào)試好的工具鏈集成到你的上位機軟件中。你通過 C# 代碼調(diào)用 VisionPro 的庫(如 Cognex.VisionPro.dll)來加載工具、運行處理、獲取結(jié)果并做出決策。

  • 優(yōu)點:靈活性極高,可以創(chuàng)建專業(yè)的用戶界面、連接數(shù)據(jù)庫、控制PLC、處理業(yè)務(wù)流程。

標準工作流是:在 QuickBuild 中調(diào)試工具 → 將 .vpp 文件保存為“作業(yè)” → 在 C# 項目中加載并運行該作業(yè)。

二、開發(fā)環(huán)境準備

1、安裝軟件:

  • 從康耐視官網(wǎng)下載并安裝 VisionPro 軟件(注意版本,如 9.x, 10.x)。

  • 安裝時務(wù)必勾選 .NET Interop Assemblies (.NET 程序集) 和 Samples (示例代碼)。

2、創(chuàng)建 C# 項目:

  • 打開 Visual Studio (推薦 2017+),創(chuàng)建一個新的 Windows Forms App (.NET Framework) 或 WPF App 項目。

3、添加引用:

  • 在解決方案資源管理器中,右鍵點擊“引用” -> “添加引用”。

  • 瀏覽到 VisionPro 的安裝目錄(通常類似 C:\Program Files\Cognex\VisionPro\bin)。

  • 添加以下核心 DLL:

    • Cognex.VisionPro.dll - (最核心)
    • Cognex.VisionPro.Core.dll
    • Cognex.VisionPro.Blob.dll - (用于斑點分析)
    • Cognex.VisionPro.Caliper.dll - (用于卡尺測量)
    • Cognex.VisionPro.PMAlign.dll - (用于圖案定位)
    • Cognex.VisionPro.Display.dll - (用于圖像顯示控件)

三、C# 代碼實現(xiàn):尺寸測量

  • 尺寸測量通常包含兩個關(guān)鍵工具:定位 (PMAlign) 和 測量(Caliper)。

  • 步驟:

    • 定位工件:使用 CogPMAlignTool 找到零件的特征圖案,獲取其坐標和角度,為測量建立坐標系。

    • 創(chuàng)建測量區(qū)域:基于定位結(jié)果,在需要測量的邊緣附近創(chuàng)建搜索區(qū)域。

    • 執(zhí)行邊緣測量:使用 CogCaliperTool 或 CogDistancePointPointTool 在指定區(qū)域內(nèi)精確查找邊緣并計算距離。

using Cognex.VisionPro;
using Cognex.VisionPro.PMAlign;
using Cognex.VisionPro.Caliper;
using Cognex.VisionPro.Display;

// 1. 加載之前在QuickBuild中創(chuàng)建并調(diào)試好的Job文件
CogJobManager myJobManager = new CogJobManager();
myJobManager.Jobs.LoadFromFile(@"C:\VisionJobs\MyMeasurementJob.vpp");
ICogJob myJob = myJobManager.Jobs[0];

// 2. 獲取圖像(例如從相機采集或從文件加載)
CogImage8Grey myImage = new CogImage8Grey(@"C:\Images\part01.bmp");
// 將圖像傳遞給Job的輸入
myJob.Inputs["InputImage"].Value = myImage;

// 3. 運行Job
myJob.Run();

// 4. 獲取結(jié)果
// 假設(shè)你的CaliperTool在Job中的名字是 "CogCaliperTool1"
ICogTool caliperTool = myJob.Tools["CogCaliperTool1"];
if (caliperTool.RunStatus.Result == CogToolResultConstants.Accept)
{
    // 獲取測量結(jié)果
    CogCaliperTool resultTool = caliperTool as CogCaliperTool;
    if (resultTool != null && resultTool.Results.Count > 0)
    {
        // 獲取第一個邊緣對的距離(如果是測量孔距、寬度等)
        double measuredDistance = resultTool.Results[0].Distance;
        Console.WriteLine($"Measured Distance: {measuredDistance:F3} pixels");

        // 通常需要將像素距離轉(zhuǎn)換為物理距離(毫米)
        // double calibrationRatio = 0.02; // 例如,每個像素代表0.02mm
        // double physicalDistance = measuredDistance * calibrationRatio;
        // Console.WriteLine($"Physical Distance: {physicalDistance:F3} mm");
    }
}

// 5. 【可選】在CogDisplay控件中顯示圖像和結(jié)果
cogDisplay1.Image = myImage;
cogDisplay1.StaticGraphics.AddList(
    myJob.Tools["CogCaliperTool1"].Results[0].CreateResultGraphics(
        CogCaliperResultGraphicConstants.Midpoint | 
        CogCaliperResultGraphicConstants.Edges),
    "MeasurementResults");

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容