【01】大恒相機SDK C++開發 —— 初始化相機,采集第一幀圖像、回調采集、關閉相機

文章目錄

  • 1 初始化相機,采集第一幀圖像
  • 2 回調方式采集圖像
  • 3 視頻教程

1 初始化相機,采集第一幀圖像

#include <iostream>
#include <GalaxyIncludes.h>
using namespace std;int main()
{//首先,對相機資源進行初始化IGXFactory::GetInstance().Init();//第二部,枚舉相機//先定義一個設備列表,用來存放枚舉到的設備GxIAPICPP::gxdeviceinfo_vector cam_list;//枚舉同一網段下的相機 無ALLIGXFactory::GetInstance().UpdateDeviceList(1000,cam_list);//枚舉同一網絡下所有相機 有ALL//IGXFactory::GetInstance().UpdateAllDeviceList(1000, cam_list);//打印設備的SN碼、設備名稱、制造商//枚舉到相機后,就可以獲取到相機的一些設備信息int cam_num = cam_list.size();GxIAPICPP::gxstring sn = cam_list[0].GetSN();GxIAPICPP::gxstring id = cam_list[0].GetDeviceID();GxIAPICPP::gxstring cmpy = cam_list[0].GetVendorName();std::cout << "檢測到 " << cam_num << " 臺相機 \r\n";std::cout << "SN碼: " << sn << "\r\n";std::cout << "相機ID: " << id << "\r\n";std::cout << "制造商: " << cmpy << "\r\n";//打開相機,可以通過IP、SN、MAC、ID等唯一標識符打開相機//這里通過SN打開相機,打開相機的方式有三種: 只讀、控制、獨占CGXDevicePointer cam = IGXFactory::GetInstance().OpenDeviceBySN(sn,GX_ACCESS_MODE::GX_ACCESS_CONTROL);//控制方式打開//打開相機后,準備開始采集圖像//首先打開流通道CGXStreamPointer cam_stream = cam->OpenStream(0);//默認打開第一個流通道//獲取遠端屬性控制器CGXFeatureControlPointer cam_remote_control = cam->GetRemoteFeatureControl();//流通道開始采集cam_stream->StartGrab();//發送開采命令cam_remote_control->GetCommandFeature("AcquisitionStart")->Execute();//采集一幀圖像CImageDataPointer img = cam_stream->GetImage(1000);//采集超時時間ms//獲取并打印圖像寬高uint16_t height = img->GetHeight();uint16_t width = img->GetWidth();std::cout << "圖像高: " << height << "\t寬:"<<width<<"\r\n";return 0;}

在這里插入圖片描述

2 回調方式采集圖像

#include <iostream>
#include <GalaxyIncludes.h>
using namespace std;//注意:回調函數要放在main函數之前,否則報錯//首先創建一個回調函數
//創建一個類,集成回調事件類int main()
{//對回調函數進行注冊//聲明采集回調事件的對象指針,并且創建指針對象ICaptureEventHandler* pCaptureHandler = NULL;pCaptureHandler = new MyCaptureEvent();//對相機資源進行初始化IGXFactory::GetInstance().Init();//第二部,枚舉相機//先定義一個設備列表,用來存放枚舉到的設備GxIAPICPP::gxdeviceinfo_vector cam_list;//枚舉同一網段下的相機 無ALLIGXFactory::GetInstance().UpdateDeviceList(1000,cam_list);//枚舉同一網絡下所有相機 有ALL//IGXFactory::GetInstance().UpdateAllDeviceList(1000, cam_list);//打印設備的SN碼、設備名稱、制造商//枚舉到相機后,就可以獲取到相機的一些設備信息int cam_num = cam_list.size();GxIAPICPP::gxstring sn = cam_list[0].GetSN();GxIAPICPP::gxstring id = cam_list[0].GetDeviceID();GxIAPICPP::gxstring cmpy = cam_list[0].GetVendorName();std::cout << "檢測到 " << cam_num << " 臺相機 \r\n";std::cout << "SN碼: " << sn << "\r\n";std::cout << "相機ID: " << id << "\r\n";std::cout << "制造商: " << cmpy << "\r\n";//打開相機,可以通過IP、SN、MAC、ID等唯一標識符打開相機//這里通過SN打開相機,打開相機的方式有三種: 只讀、控制、獨占CGXDevicePointer cam = IGXFactory::GetInstance().OpenDeviceBySN(sn,GX_ACCESS_MODE::GX_ACCESS_CONTROL);//控制方式打開//打開相機后,準備開始采集圖像//首先打開流通道CGXStreamPointer cam_stream = cam->OpenStream(0);//默認打開第一個流通道//獲取遠端屬性控制器CGXFeatureControlPointer cam_remote_control = cam->GetRemoteFeatureControl();//注冊回調函數cam_stream->RegisterCaptureCallback(pCaptureHandler,NULL);//流通道開始采集cam_stream->StartGrab();//發送開采命令cam_remote_control->GetCommandFeature("AcquisitionStart")->Execute();//采集一幀圖像//CImageDataPointer img = cam_stream->GetImage(1000);//采集超時時間ms//當還在采集主函數就執行完畢了,會報錯,加一個阻塞getchar();//采集完畢,停止采集,關閉相機//遠端屬性控制器發送停止命令cam_remote_control->GetCommandFeature("AcqisitionStop")->Execute();//流通道停止采集cam_stream->StopGrab();//流通道關閉cam_stream->Close();//相機關閉cam->Close();//然后釋放我們所有的相機資源IGXFactory::GetInstance().Uninit();return 0;}class MyCaptureEvent : public ICaptureEventHandler
{
public:void DoOnImageCaptured(CImageDataPointer& img, void* userparam){//獲取并打印圖像寬高uint16_t height = img->GetHeight();uint16_t width = img->GetWidth();std::cout << "圖像高: " << height << "\t寬:" << width << "\r\n";}};

在這里插入圖片描述

//注意:回調函數要放在main函數之前,否則報錯
在這里插入圖片描述

3 視頻教程

【大恒工業相機SDK開發C++版】初始化相機,采集第一幀圖像

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

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

相關文章

Windows下定位Mingw編譯的Qt程序崩潰堆棧

一、dump和pdb是什么 在Windows系統下&#xff0c;當我們寫的程序跑在客戶的機器上&#xff0c;因為一個bug&#xff0c;導致程序崩潰&#xff0c;我們該如何定位并修復這個bug呢&#xff1f; 有人會說記錄日志&#xff0c;即便有日志&#xff0c;也是不好定位的&#xff0c;因…

.net依賴注入框架 Autofac和MEF的對比

Autofac 默認需要顯式注冊每個類型&#xff0c;這是它與MEF在模塊化設計上的主要區別。以下是具體對比說明&#xff1a;1. Autofac 的基本注冊方式 Autofac 必須通過代碼明確注冊每個需要注入的類型&#xff08;除非使用特殊掃描機制&#xff09;&#xff1a; var builder new…

Python 使用 asyncio 包處理并 發(使用asyncio包編寫服務器)

使用asyncio包編寫服務器 演示 TCP 服務器時通常使用回顯服務器。我們要構建更好玩一點的示 例服務器&#xff0c;用于查找 Unicode 字符&#xff0c;分別使用簡單的 TCP 協議和 HTTP 協議實現。這兩個服務器的作用是&#xff0c;讓客戶端使用 4.8 節討論過的 unicodedata 模塊…

Node.js (Express) + MySQL + Redis構建項目流程

以下是使用 Node.js (Express) MySQL Redis 構建完整項目的詳細流程&#xff0c;涵蓋環境搭建、架構設計、核心代碼實現和部署優化&#xff1a;一、項目初始化 1. 創建項目目錄 mkdir my-project cd my-project npm init -y2. 安裝基礎依賴 npm install express mysql2 redis…

Python3 中使用zipfile進行文件(夾)的壓縮、解壓縮

一、文件壓縮與解壓縮模塊 zipfile簡介 zipfile 是 Python 標準庫中用于處理 ZIP 壓縮文件的模塊&#xff0c;提供了創建、讀取、寫入、解壓 ZIP 文件的完整功能。它支持多種壓縮算法&#xff0c;無需安裝額外依賴&#xff0c;是處理 ZIP 格式的首選工具。 核心功能與常用類 zi…

在Java客戶端使用Redis

目錄 第一步&#xff1a;開放Redis外部連接配置 第二步&#xff1a;配置端口轉發 第三步&#xff1a;在IDEA中導入依賴 第四步&#xff1a;編寫代碼命令 連接環境&#xff1a;Java客戶端為本地IDEA&#xff0c;Redis服務器安裝在云服務器Ubuntu系統中。 第一步&#xff1a;開…

【MySQL】MySQL索引—B樹/B+樹

目錄 1. 數據庫索引 1.1 索引的概念 1.2 索引的特點 1.3 索引查詢對比普通的查詢 1.4 索引的操作 1.5 索引的原理 1.6 B樹 1.7 B樹 1.8 B樹的優點 1. 數據庫索引 1.1 索引的概念 數據庫的索引是一種特殊的數據結構&#xff0c;里面包含著數據表中所有記錄的引用&…

jQuery Mobile 面板詳解

jQuery Mobile 面板詳解 引言 隨著移動設備的普及,移動網頁開發變得越來越重要。jQuery Mobile 是一個基于 jQuery 的移動網頁開發框架,它提供了一套豐富的 UI 組件和主題,使得開發者可以快速構建出美觀、響應式的移動網頁。在 jQuery Mobile 中,面板(Panel)是一個非常…

Python中的import和from...import有什么區別?

文章目錄 前言 一、import導入模塊 導入模塊并給它一個別名 語法格式 二、from...import導入特定項 1.導入模塊中的特定項 2.導入模塊中的所有項 2.1 命名空間核污染 2.2 性能影響 總結 前言 在Python編程中,模塊和包的導入機制是編寫可維護、可擴展代碼的核心。深入理解Pyth…

vscode提示“無法使用 compilerPath 解析配置”解決辦法

0 問題描述 使用vscode的Remote-SSH插件連接安裝在虛擬機上的Windows10進行遠程開發時&#xff0c;出現如下提示&#xff1a;無法使用 compilerPath 解析配置:“D:\mingw64\bin\gcc.exe” 所有包含C庫頭文件的文件都被標紅提示錯誤&#xff1a;1 問題原因 vscode沒有設置正確的…

信噪比(Signal-to-Noise Ratio, SNR)詳細介紹

信噪比&#xff08;Signal-to-Noise Ratio, SNR&#xff09;信噪比&#xff08;Signal-to-Noise Ratio&#xff0c;SNR&#xff09;是衡量信號質量的重要參數&#xff0c;表示有用信號的功率與背景噪聲功率的比值。SNR在通信、音頻處理、視頻處理以及其他電子信號處理領域中具有…

Nginx 相關實驗(1)

nginx源碼編譯 本實驗采用nginx源碼編譯的安裝方式&#xff0c;需要準備一個tar包&#xff0c;可從nginx官網上下載。 下載地址&#xff1a;nginx: downloadhttps://nginx.org/en/download.html 將下載好的壓縮包傳到虛擬機中的自定義目錄下 [rootwebserver ~]# ls anacond…

【選型】HK32L088 與 STM32F0/L0 系列 MCU 參數對比與選型建議(ST 原廠 vs 國產芯片)(單片機選型主要考慮的參數與因素)

國產 vs ST 單片機在工業控制中的性能對比分析 HK32L088 與 STM32F0/L0 系列 MCU 參數對比與選型建議 工業控制領域 MCU 選型:國產航順 HK32 與 ST 原廠芯片深入比較 國產 MCU 是否可替代 ST?基于發電機控制應用的深入評估 從數據手冊看 MCU 制造工藝差異:HK32L088 vs S…

LLM Prompt與開源模型資源(1)提示詞工程介紹

學習材料&#xff1a;https://www.hiascend.com/developer/courses/detail/1935520434893606913學習時長&#xff1a; 預計 30 分鐘學習目的&#xff1a; 了解提示工程的定義與作用 熟悉提示工程的關鍵技術相關概念 掌握基于昇騰適配的大模型提示工程的入門及進階指南 提示…

kafka與其他消息隊列(如 RabbitMQ, ActiveMQ)相比,有什么優缺點?

Kafka、RabbitMQ 和 ActiveMQ 是三種最主流的消息中間件&#xff0c;它們的設計和適用場景有所不同。 我們可以通過一個簡單的表格來快速了解它們的核心區別&#xff1a; 核心對比一覽特性 / 維度KafkaRabbitMQActiveMQ核心模型分布式、持久化的日志系統 (Dumb Broker / Smart …

Kubernetes架構和部署

k8s組件 master節點:管理節點 管理平面組件 api server : api gateway controller manager scheduler etcd 數據庫 worker節點:被管理節點,運行容器 kubelet:k8s agent container runtime:docker,containerd,cri-o kube-proxy:service 網絡 ????????…

建造者模式及優化

建造者模式是一種創建型設計模式&#xff0c;它將復雜對象的構建過程與表示分離&#xff0c;使得同樣的構建過程可以創建不同的表示。核心思想是指揮者定流程&#xff0c;建造者填細節&#xff0c;通過多個步驟逐步構建對象&#xff0c;并允許靈活組合這些步驟以生成不同配置的…

【09】C++實戰篇——C++ 生成靜態庫.lib 及 C++調用lib,及實際項目中的使用技巧

文章目錄1 C 靜態庫.lib 生成1.1 靜態庫lib的生成方法和使用方法1.2 創建靜態庫項目1.3 編寫.h 和 .cpp文件1.4 設置 及 生成 DLL2 調用 C 靜態庫lib2.1 新建LIBtest及測試代碼2.2 靜態庫配置 及代碼調用測試3 實際項目中的使用技巧、及通用設置3.1 設置lib輸出路徑3.2 設置頭文…

飛算JavaAI:從寫不出代碼到絲滑開發,飛算JavaAI把小白從編程深淵撈進了正軌---它都讓我懷疑自己是不是多余的!

開篇介紹 對于很多初學者來說&#xff0c;編程是一項既有趣又充滿挑戰的任務。面對復雜的代碼和繁瑣的開發流程&#xff0c;常常會感到無從下手。不過&#xff0c;現在有了飛算JavaAI&#xff0c;這一切都將變得簡單起來。 它有啥實用功能呢&#xff1f; 比如&#xff1a; …

關于tresos Studio(EB)的MCAL配置之GtmCfg

Generic Time Module通用時鐘模塊GeneralGtmCfg_DevErrorDetect開發者錯誤檢測開關GtmCfg_DemErrorReporting診斷錯誤報告開關GtmCfg_VersionInfoApi獲取版本信息的接口開關GtmCfg_ConfigSetClockManagementUnitGlobal_Clock_Control_Numerator全局時鐘分頻器的分子Global_Cloc…