C#與VisionPro聯合編程 使用相機獲取圖像

来源:https://www.cnblogs.com/MrYuan/archive/2023/02/09/17105397.html
-Advertisement-
Play Games

接上篇 通過一個示例形象地理解C# async await 非並行非同步、並行非同步、並行非同步的併發量控制 前些天寫了兩篇關於C# async await非同步的博客, 第一篇博客看的人多,點贊評論也多,我想應該都看懂了,比較簡單。 第二篇博客看的人少,點贊的也少,沒有評論。 我很納悶,第二篇博客才是重點 ...


使用相機獲取圖像的主要內容是:

  1. C#下使用VisionPro的工具驅動相機獲取圖像;
  2. 製作顯示界面,顯示相機獲取的圖像;
  3. 相機響應用戶指令。

用到的工具:

  1. Gige相機;
  2. VisionPro9.0;
  3. VisualStudio2019 。

1 一個難懂的地方

在VisionPro的幫助文檔中有個詞“幀獲取器”,大家默默的把它翻譯成相機就行了。使用GigE相機的時候就是指相機,其他的也許有不同,不知道。

VisionPro中,相機的初始化設置界麵包含了相機的所有屬性。這些在C#環境中都可以通過編碼的方式實現。

 

2 取像工具和取像隊列

上圖對應的工具是CogAcqFifoTool,這個類包含上圖中的所有內容。只有一個相機的時候,可以直接使用完成與相機的連接。

CogAcqFifoTool acqTool = new CogAcqFifoTool();

拍照獲取圖像使用的是取像工具的屬性Operator,它是ICogAcqFifo類型。

ICogAcqFifo AcqFifo = AcqTool.Operator;

使用取像隊列的Acquire方法即可獲得一張圖像,取像隊列還提供了非同步方法,通常的應用中這個同步方法就足夠了。

ICogImage image= AcqFifo.Acquire(out numAcqs);

3 構建項目

工具都準備好了,但是代碼不能慌著寫。使用相機獲取一張圖像這個任務可以分成兩個子任務:

  1. 獲取圖像;
  2. 展示圖像。

 

展示圖像使用CogRecordDispaly控制項,找個喜歡的位置放好就可以了。

獲取圖像怎麼做?可以暫停,思考一下。

VisionPro提供了獲取圖像的例子,可以用來學習(2 取像工具和取像隊列)中工具的使用技巧。在項目中不可以完全使用。

從“單一職責”的角度考慮,界面類中不應該存在連接相機內容。界面的職責是顯示,所需要的只是一張圖像。就像討厭的老闆:“我只要結果,過程我不管”。

利用面向對象分析這個項目,相機是一個獨立存在的個體,有自己的名字,劃分為一個單獨的類,很正常。這個類就命名為 Camra 。

硬體設備的使用過程通常分三步:連接→使用功能→斷開。所以,Camra類的方法按照這三部分添加:GetImage,Close。連接放在構造方法中。

 

設計好類才,編碼工作才可以開始。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Mybatis 作為國內開發中常用到的半自動 orm 框架,相信大家都很熟悉,它提供了簡單靈活的xml映射配置,方便開發人員編寫簡單、複雜SQL,在國內互聯網公司使用眾多。 本文針對筆者日常開發中對 Mybatis 占位符 #{} 和 ${} 使用時機結合源碼,思考總結而來 Mybatis 版本 3 ...
  • 安裝Rust 參考文檔,指定安裝目錄和鏡像配置。 rustc --version 檢查是否安裝成功。 構建程式 使用rustc編譯運行 rustc 編譯:rustc main.js 運行: Windows:.\main.exe 或 main Linux:./main 註意: 編譯成功後會生成一個二進 ...
  • java中線程的實現方式 繼承Thread類 代碼 : package ThreadImplamen; import static java.lang.Thread.sleep; public class threadImp { public static void main(String[] ar ...
  • Maven 用的好好的,gradle這個程咬金冒出來了! 沒法子,咱們乾! Gradle 目錄結構: 各文件作用 build.gradle | 相當於maven的pom,主要定義依賴文件,編譯版本等信息 gradlew | Linux下的shell腳本,內部調用的是本項目中的gradle 目錄下的g ...
  • 教程簡介 初學者敏捷數據科學教程 - 從簡單和簡單的步驟開始學習敏捷數據科學,包括簡介,方法概念,數據科學過程,敏捷工具和安裝,敏捷數據處理,SQL與NoSQL,NoSQL和數據流編程,收集和顯示,數據可視化,數據豐富,使用報告,預測的作用,使用PySpark提取功能,構建回歸模型,部署預測系統,S ...
  • ​本文在CSDN"彭_Yu的博客"同步發表 目錄 1.要點 2.運行原理 3.異或演算法簡介 4.運行效果 5.實現過程 5.1文件結構 5.2建立資料庫 5.3 Python代碼 ​ 編輯 註:程式實例可到文末下載 1.要點 1.tkinter界面設計 2.SQLite資料庫操作 3.字元串異或運算 ...
  • 本文中,我將會為大家分享一個如何用.NET技術開發“在瀏覽器端編譯和運行C#代碼的工具”,核心的技術就是用C#編寫不依賴於Blazor框架的WebAssembly以及Roslyn技術。 一、 為什麼要開發這樣的工具? 對於編程初學者來講,開發環境的安裝配置是一個令人頭疼的事情,如果能讓初學者不用做任 ...
  • 隨著技術的進步,跨平臺開發已經成為了標配,在此大背景下,ASP.NET Core也應運而生。本文主要基於ASP.NET Core+Element+Sql Server開發一個校園圖書管理系統為例,簡述基於MVC三層架構開發的常見知識點,本系列共五篇文章,前四篇文章介紹瞭如何搭建開發框架,登錄功能,主... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...