Halcon圖像采集

Halcon是一款強大的機器視覺軟件,結合C#可以開發出功能完善的視覺應用程序。

基本設置

確保已經安裝了Halcon和Halcon的.NET庫(HalconDotNet)。

1. 添加引用

在C#項目中,需要添加對HalconDotNet.dll的引用:

  1. 右鍵點擊項目 -> 添加 -> 引用

  2. 瀏覽找到Halcon安裝目錄下的HalconDotNet.dll(通常位于%HALCONROOT%\bin\dotnet35

相機采集代碼實現

2. 基本采集代碼

using HalconDotNet;
using System;
using System.Windows.Forms;public class HalconCamera
{private HWindowControl hWindowControl;private HTuple hv_AcqHandle;private HImage hv_Image;public HalconCamera(HWindowControl windowControl){hWindowControl = windowControl;}// 初始化相機public void InitCamera(){try{// 查找可用相機HTuple hv_Info;HOperatorSet.InfoFramegrabber("DirectShow", "device", out hv_Info, out _);// 打開第一個找到的相機HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb", -1, "false", "default", "[0] ", 0, -1, out hv_AcqHandle);// 設置相機參數HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "grab_timeout", -1);}catch (HalconException ex){MessageBox.Show("相機初始化失敗: " + ex.Message);}}// 開始連續采集public void StartGrabbing(){try{HOperatorSet.GrabImageStart(hv_AcqHandle, -1);// 使用定時器或線程連續抓取圖像Timer grabTimer = new Timer();grabTimer.Interval = 50; // 20fpsgrabTimer.Tick += (s, e) => GrabImage();grabTimer.Start();}catch (HalconException ex){MessageBox.Show("開始采集失敗: " + ex.Message);}}// 抓取單幀圖像public void GrabImage(){try{hv_Image = new HImage();HOperatorSet.GrabImageAsync(out hv_Image, hv_AcqHandle, -1);// 顯示圖像HOperatorSet.DispObj(hv_Image, hWindowControl.HalconWindow);}catch (HalconException ex){MessageBox.Show("圖像采集失敗: " + ex.Message);}}// 停止采集并釋放資源public void CloseCamera(){try{if (hv_AcqHandle != null){HOperatorSet.CloseFramegrabber(hv_AcqHandle);hv_AcqHandle = null;}}catch (HalconException ex){MessageBox.Show("關閉相機失敗: " + ex.Message);}}// 獲取當前圖像public HImage GetCurrentImage(){return hv_Image;}
}

3. 在WinForms中使用

在WinForms窗體中添加一個HWindowControl控件,然后使用上面的類:

public partial class MainForm : Form
{private HalconCamera halconCamera;public MainForm(){InitializeComponent();halconCamera = new HalconCamera(hWindowControl1);}private void btnStart_Click(object sender, EventArgs e){halconCamera.InitCamera();halconCamera.StartGrabbing();}private void btnStop_Click(object sender, EventArgs e){halconCamera.CloseCamera();}private void btnGrabSingle_Click(object sender, EventArgs e){halconCamera.GrabImage();}private void MainForm_FormClosing(object sender, FormClosingEventArgs e){halconCamera.CloseCamera();}
}

4. 相機參數設置

public void SetCameraParameters(double exposure, double gain)
{try{HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "exposure", exposure);HOperatorSet.SetFramegrabberParam(hv_AcqHandle, "gain", gain);}catch (HalconException ex){MessageBox.Show("設置相機參數失敗: " + ex.Message);}
}

5. 保存圖像

public void SaveImage(string filePath)
{try{if (hv_Image != null){hv_Image.WriteImage("tiff", 0, filePath);}}catch (HalconException ex){MessageBox.Show("保存圖像失敗: " + ex.Message);}
}

6. 多相機支持

public List<string> GetAvailableCameras()
{List<string> cameras = new List<string>();try{HTuple hv_Info;HOperatorSet.InfoFramegrabber("DirectShow", "device", out hv_Info, out _);for (int i = 0; i < hv_Info.Length; i++){cameras.Add(hv_Info[i].S);}}catch (HalconException ex){MessageBox.Show("獲取相機列表失敗: " + ex.Message);}return cameras;
}

注意事項

  1. Halcon許可證:確保有合法的Halcon開發許可證

  2. 相機接口:根據相機類型選擇合適的接口(DirectShow, GigEVision, USB3Vision等)

  3. 異常處理:妥善處理所有可能的異常,特別是在工業環境中

  4. 資源釋放:確保在程序退出時釋放所有Halcon資源

  5. 性能優化:對于高速采集,可能需要使用多線程或異步處理

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900686.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Win10定時任務計劃無法顯示要執行的EXE任務程序界面,問題解決辦法

用C#開發的一款WINFORM程序&#xff0c;在電腦測試一切順利&#xff0c;運行結果正確。但用電腦的定時任務執行時&#xff0c;程序界面不顯示&#xff0c;重啟電腦、各種試都不行&#xff0c;最終問題解決。 解決辦法&#xff1a; 要選“只在用戶登陸時運行”&#xff0c;才能執…

Navicat和PLSQL在oracle 使用語句報ORA-00911: 無效字符

后面我發現可能是在復制SQL語句中有中文&#xff0c;但是環境變量未配置中文環境。 因為Oracle的語法解析器特別嚴格&#xff0c;就會報出以上的錯誤出來。 SQL語句錯誤&#xff0c;存在中文字符或者sql語句空格導致&#xff0c;去掉即可解決。 我重新寫語句&#xff0c;發現…

[ctfshow web入門] web30

信息收集 題目將flag system php不區分大小寫地過濾了 解題 前置知識 print_r&#xff1a;php中用于打印數組 scandir&#xff1a;php中用于獲取指點目錄下的所以文件目錄名 getcwd&#xff1a;獲取當前目錄 目錄獲取 這里提供兩種方法 print_r(scandir(getcwd())); pri…

linux下MMC_TEST的使用

一:打開如下配置,將相關文件編譯到內核里: CONFIG_MMC_TEST CONFIG_MMC_DEBUG CONFIG_DEBUG_FS二:將mmc設備和mmc_test驅動進行綁定 2.1查看mmc設備編號 ls /sys/bus/mmc/drivers/mmcblk/mmc0:aaaa2.2將mmc設備與原先驅動進行解綁 echo mmc0:aaaa >

《深度解析LightGBM與MySQL數據集成:高效機器學習的新范式》

在機器學習工程實踐中&#xff0c;數據與模型的高效交互一直是制約算法性能發揮的關鍵瓶頸。LightGBM作為梯度提升決策樹框架的杰出代表&#xff0c;其與關系型數據庫MySQL的深度集成能力&#xff0c;為數據科學家提供了從原始數據到預測結果的完整解決方案。這種集成不是簡單的…

處理Excel的python庫openpyxl、xlrd、xlwt、pandas有什么區別,搞懂它

openpyxl、xlrd、xlwt、pandas 都能處理 Excel 表格&#xff0c;但用途和適合的場景不同。今天做個總結&#xff1a; 庫名功能支持格式讀寫支持樣式備注openpyxl全面的.xlsx處理庫.xlsx&#xff08;Excel2007&#xff09;???首選xlrd讀取.xls文件的老牌工具.xls&#xff08…

EasyExcel-一款好用的excel生成工具

EasyExcel是一款處理excel的工具類&#xff0c;主要特點如下&#xff08;官方&#xff09;&#xff1a; 特點 高性能讀寫&#xff1a;FastExcel 專注于性能優化&#xff0c;能夠高效處理大規模的 Excel 數據。相比一些傳統的 Excel 處理庫&#xff0c;它能顯著降低內存占用。…

視頻分析設備平臺EasyCVR攜手高空拋物AI智能分析技術,打造住宅小區頭頂安全智能防線

一、背景介紹 隨著城市化進程的高速推進&#xff0c;城市天際線不斷被刷新&#xff0c;高樓大廈密密麻麻。然而&#xff0c;高空拋物問題也逐漸顯現&#xff0c;這一行為不僅嚴重影響城市文明的形象&#xff0c;更帶來很多安全隱患&#xff0c;威脅居民的生命財產安全&#xf…

Spring MVC 操作會話屬性詳解(@SessionAttributes 與 @SessionAttribute)

Spring MVC 操作會話屬性詳解&#xff08;SessionAttributes 與 SessionAttribute&#xff09; 1. 核心注解對比 注解作用范圍功能SessionAttributes類級別聲明控制器中需要持久化的模型屬性&#xff08;存入 HttpSession&#xff09;SessionAttribute方法參數/返回值顯式綁定…

Python字典實戰: 三大管理系統開發指南(班級+會議+購物車)(附源碼)

目錄 摘要 一、班級管理系統&#xff08;含成績模塊&#xff09; 1. 功能概述 2. 完整代碼與解析 3. 代碼解析與亮點 二、會議管理系統 1. 功能概述 2. 完整代碼 3. 代碼解析與亮點 三、購物車管理系統 1. 功能概述 2. 完整代碼 3. 代碼解析與亮點 四、總結與擴…

北京自在科技:讓萬物接入蘋果Find My網絡的″鑰匙匠″

在AirTag掀起全球防丟熱潮的今天&#xff0c;越來越多的第三方產品開始接入蘋果Find My網絡——從充電寶到電動車&#xff0c;從行李箱到保溫杯&#xff0c;用戶只需打開iPhone的「查找」App&#xff0c;就能實時定位這些物品。 北京自在科技有限責任公司早在蘋果推出Find My開…

Vue進行前端開發流程

一、創建vue項目 創建vue項目&#xff1a;先進入要操作的目錄下&#xff0c;注意本項目是用vue2開發的。 vue create vue項目名 二、項目開發 1.創建項目結構 2.開發功能模塊 主入口App.vue <template><div class"boss-app"><Header /><m…

網絡帶寬測速工具選擇指南iperf3 nttcp tcpburn jperf使用詳解

簡介 本文主要介紹內網&#xff08;局域網&#xff09;與外網&#xff08;互聯網&#xff09;的網絡帶寬測速工具下載地址、選擇指南、參數對比、基本使用。 測速工具快速選擇指南 測速工具下載地址 iperf 官網下載鏈接&#xff1a;iperf.fr/iperf-download.php該鏈接提供了不…

微軟的 Copilot 現在可以瀏覽網頁并為您執行操作

在慶祝其 50 歲生日之際&#xff0c;微軟正在向其人工智能驅動的 Copilot 聊天機器人傳授一些新技巧。 從 BASIC 到 AI&#xff0c;改變世界的公司&#xff1a;微軟 微軟表示&#xff0c;Copilot 現在可以在“大多數網站”上采取行動&#xff0c;使其能夠預訂門票、預訂餐廳等…

Docker學習--網絡相關命令

docker network 命令的作用&#xff1a; 用于管理 Docker 網絡。這些命令可以創建、列出、刪除和檢查網絡&#xff0c;幫助用戶在 Docker 容器之間建立通信。 常用命令&#xff1a; ①列出所有網絡&#xff1a; docker network ls。 輸出&#xff1a; NETWORK ID NA…

【Vue3知識】組件間通信的方式

組件間通信的方式 概述**1. 父子組件通信****父組件向子組件傳遞數據&#xff08;Props&#xff09;****子組件向父組件發送事件&#xff08;自定義事件&#xff09;** **2. 兄弟組件通信****通過父組件中轉****使用全局狀態管理&#xff08;如 Pinia 或 Vuex&#xff09;** **…

[藍橋杯] 挖礦(CC++雙語版)

題目鏈接 P10904 [藍橋杯 2024 省 C] 挖礦 - 洛谷 題目理解 我們可以將這道題中礦洞的位置理解成為一個坐標軸&#xff0c;以題目樣例繪出坐標軸&#xff1a; 樣例&#xff1a; 輸入的5為礦洞數量&#xff0c;4為可走的步數。第二行輸入是5個礦洞的坐標。輸出結果為在要求步數…

2025年Python的主要應用場景

李升偉 編譯 Python在2025年仍是最受歡迎和強大的編程語言之一。其簡潔易讀的語法以及龐大的庫生態系統&#xff0c;使其成為各行業開發者的首選。無論是構建復雜的數據管道&#xff0c;還是自動化重復性任務&#xff0c;Python都能提供廣泛的應用場景&#xff0c;以實現快速、…

fastapi完全離線環境(無外網)的訪問Swagger所做特殊處理

在互聯網環境中&#xff0c;只要 啟動FastAPI 服務運行在本地機器上&#xff0c;訪問 http://localhost:8000/docs&#xff08;Swagger UI&#xff09;就可以訪問到Swagger界面&#xff0c;但是在完全離線環境&#xff08;無外網&#xff09;下如何訪問Swagger頁面呢&#xff1…

Ubuntu 20.04 出現問號圖標且無法聯網 修復

在 Ubuntu 中遇到網絡連接問題&#xff08;如出現問號圖標且無法聯網&#xff09;&#xff0c;可以通過以下命令嘗試重啟網絡服務&#xff1a; 1. 推薦先修改DNS 編輯 -> 虛擬機網絡編輯器-> VMnet8 ->NAT 設置 -> DNS 設置 -> 設置DNS 服務器 DNS填什么 取決…