工业相机 SDK 二次开发-VC6.0 程序示例

本文主要介绍了使用工业相机SDK(Software Development Kit)开发C++程序方法及过
程。在 SDK 开发包目录下,提供了 13 个 VC6.0 示例程序,其中 MFC 程序 5 个,分别为
BasicDemo、ReconnectDemo、SetIODemo、ForceIpDemo、MultipleCamera;控制台程序 8
个,分别为 ConnectSpecCamera、ConvertPixelType、Events、Grab_Callback、GrabImage、
MultiCast、ParametrizeCamera_FileAccess、ParametrizeCamera_LoadAndSave。这些示例程序
展示了工业相机 SDK 的各个接口的调用方式。
本文就这五个 MFC 示例程序的操作方法和开发流程展开讨论,介绍各个示例程序的
使用步骤和开发流程,方便用户快速入门使用 C++的 SDK。
【注意】
C++版示例程序兼容中英文,对关键的程序会有中英文的注释,且界面控件支持中英文
根据安装时操作系统,可通过切换 Dialog 实现。
一.BasicDemo 使用步骤及开发流程
BasicDemo 是一个基本示例程序,包含了 SDK 使用过程中常用的一些接口调用,初次
使用工业相机 SDK 进行二次开发的用户推荐首先参考 BasicDemo,其涵盖了大多数用户对
SDK 的使用方法示例需求。
1.1 Demo 软件使用步骤
1.1.1 界面总体
软件界面总览,一共包括四个控制模块(初始化,图像采集,图片保存,参数控制)、一
个下拉设备列表和一个图像显示区域

1.1.2 使用过程
点击【查找设备】进行查找设备,这时(17)会出现当前在线的设备列表,命名方式为
用户 ID 不为空时显示设备类型+设备名称+IP 地址,设备为空时显示设备类型+设备型号+IP
地址。选择其中一个设备

点击【打开设备】打开当前选中的设备,默认以连续方式打开设备。选择触发模式可以
选中触发模式单选框。


在触发模式下,可以设置为软触发,当点击【开始采集】后,同时【软触发一次】也是
可以点击从而完成触发一次功能


采用连续模式下,点击【开始采集】进行图像采集,左边的显示区域将会出现实时图像
此时,若点击【保存 BMP】或者【保存 JPG】,将会在当前 exe 目录下出现一个 bmp

或 jpg 类型的图片,即为保存的当前图像
点击【获取参数】将会刷新当前的曝光时间、增益和帧率的数值,而更改【曝光】、【增
益】、【帧率】的数值之后点击【设置参数】将会重新设置新的曝光时间、增益和帧率的数值


在使用过程中有任何异常或错误,都会以弹窗的形式出现提示,若没有任何提示,则认
为一切正常地运行。
1.2 Demo 软件开发步骤
1.2.1 Dll 加载
安装好 MVS 的同时会把相应 32 和 64 的 dll 打到环境变量。
1.2.2 工程配置
创建 VS 工程并添加引用,加入 MvSdkExport.lib 和 MvSdkExport.h 到工程中。

1.2.3 引用命名空间
添加头文件和库文件引用之后,就可以调 MvSdkExport.h 中相机操作的函数。

二.ReconnectDemo 使用步骤及开发流程
ReconnectDemo 重点展示了 SDK 中相机断线重连的操作步骤。告知用户如何使用断
线回调以及如何重新连接相机。
2.1 Demo 软件使用步骤
2.1.1 界面总体
总体界面如下图。界面类似 BasicDemo,具有查找设备、打开设备、关闭设备、开始采
集、停止采集、设置触发等功能。

2.1.2 使用过程
ReconnectDemo 中,当相机断线时,程序会进入异常回调,异常回调中,会根据当前选
中的相机信息进行不断的尝试连接,当相机在线时则会被连接上。
2.2 Demo 软件开发步骤
关于相机操作的开发流程与 BasicDemo 相似。本节重点介绍回调函数的使用方法。
在 C++中,通过传函数指针实现回调功能。在工业相机 C++ SDK 中,异常断线的回调
为 RegisterExceptionCallBack。
在 CBasicDemoDlg 类中实现断线重连的函数 ReconnectDevice,然后传入回调函数
RegisterExceptionCallBack 中,当打开相机操作之后,利用 SDK 中注册回调函数接口,注册
回调函数。当相机异常断线时,程序会进入异常回调。用户可在异常回调中进行重新连接相
机的操作。注册过程如下:
m_pcMyCamera->RegisterExceptionCallBack(ReconnectDevice, this);
SetIODemo 使用步骤及开发流程
本节介绍的 Demo 主要实现对相机 IO 输入输出的控制。使用用户群体为需要对相机 IO
进行控制的用户。
3.1 Demo 软件使用步骤
3.1.1 界面总体
总体界面如下图所示。


3.1.2 使用过程
相机基本操作与 BasicDemo 相似。打开一个设备后可以对相机的 IO 属性进行获取和设
置。IO 属性主要有 LineSelector 和 LineMode 两个。分别点击获取和设置可以对相应的属性
进行读取和写入。
3.2 Demo 软件开发步骤

3.2.1 IO 属性
有关相机 IO 属性主要有两个:LineSelector 和 LineMode。LineSelector 指输出端口选择,
目前相机主要有三个 IO 端口:Line0,Line1,Line2.其中,Line0 只可配置为输入,Line1
只可配置为输出,Line2 可配置为输入或者输出。LineMode 表示输入或者输出模式。
3.2.2 获取和设置接口
在示例程序中,获取和设置 IO 用到的接口分别为:MV_CC_GetEnumValue(IN void* 
handle,IN const char* strKey,OUT MVCC_ENUMVALUE *pEnumValue) ,以及
MV_CC_SetEnumValue(IN void* handle,IN const char* strKey,IN unsigned int nValue)。
在 SDK 中,类似此类 Set 或 Get + 数据类型 + Value 的接口函数成为万能接口函数,
其作用为获取或设置相机任意属性值。万能接口的第一个参数为属性名称,为一个 string 型
字符串,相机属性名称可以通过查找 MvCameraNode.xls 文档查询。第二个参数为获取到的
或者设置的属性值。
3.2.3 IO 操作
在本节示例程序中,主要用到的属性节点为”LineSelector”以及”LineMode”,其属性类型
均为 Enumeration 类型。调用万能接口即可实现对其属性的操作。
获取操作如下:
nRet = m_pcMyCamera->GetEnumValue("LineSelector", &stSelector);
nRet = m_pcMyCamera->GetEnumValue("LineMode", &stSelector);
设置操作如下:
nRet = m_pcMyCamera->SetEnumValue("LineSelector", nValue);
nRet = m_pcMyCamera->SetEnumValue("LineMode", nValue);
三. ForceIpDemo 使用步骤和开发流程
4.1 Demo 软件使用步骤
4.1.1 界面总体
软件界面如下图所示。

界面主要分为两个模块:初始化模块和设置 IP 模块。
4.1.2 使用过程
首先,点击查找设备对网段内的设备进行枚举,软件自动选择列表中第一项。
然后,选择需要配置 IP 的设备。
在设置 IP 模块的提示信息中会提示本机网卡所在的网段并显示建议设置的 IP 范围。在
输入框中输入想要设置的 IP,点击设置。
4.2 Demo 软件开发步骤
设置 IP 调用 SDK 中 MV_GIGE_ForceIpEx(IN void* handle, unsigned int nIP, unsigned int 
nSubNetMask, unsigned int nDefaultGateWay)接口。
四.MultipleDemo 使用步骤及开发流程
5.1 Demo 软件使用步骤
5.1.1 界面总体
总览界面,软件界面主要包括三个控制模块(初始化、参数设置、采集图像),四块图像显
示区域以及帧数信息显示区域。

5.1.2 使用过程
打开软件,“在线设备数量”会自行枚举在线相机个数,在“使用设备个数”文本框内填写
需要打开的相机个数 n,单击“初始化相机”,默认以连续方式打开 n 台设备。

在“曝光”和“增益”中填写修改的参数,单击“设置参数”,即可依次修改 n 台设备参数。
同时可选择连续或者触发模式。

点击“开始采集”,左侧会显示预览图像。同时采集帧数和丢帧数会即时更新数据(1 秒
更新一次)。此时若点击“保存图片”,会在当前 exe 目录下出现所保存的图片。若希望结束,
则点击“停止采集”,“关闭设备”即可。

当出现异常和错误时,会以弹窗的形式提示。有一些操作成功时也会有提示。
5.2 Demo 软件开发步骤
5.2.1 多相机的实现
MultipleDemo 在 BasicDemo 基础上,在类中添加 m_nUseNumEdit 的成员变量,表示四
台相机的序号,初始化时由“使用数量”和对应相机打开的序列号决定是否对某台相机执行操
作。
5.2.2 总帧数、丢帧数、保存图片
总帧数在回调函数中计数(成员变量)。回调函数中同时完成保存图片的功能,判断是
否点击保存图片的按钮确定是否保存当前帧为图片,保存完成后,修改相应标志位以免下次
取流重复保存图片。丢帧数由调用

m_pcMyCamera[nUsingDeviceNum]->GetAllMatchInfo(&struMatchInfo)接口获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8712.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择困难?直接生成pynput快捷键字符串

from pynput import keyboard# 文档:https://pynput.readthedocs.io/en/latest/keyboard.html#monitoring-the-keyboard # 博客(pynput相关源码):https://blog.csdn.net/qq_39124701/article/details/145230331 # 虚拟键码(十六进制):https:/…

初阶1 入门

本章重点 C的关键字命名空间C的输入输出缺省参数函数重载引用内联函数auto关键字基于范围的for循环指针的空值nullptr 1.C的关键字 c总共有63个关键字,其中包含c语言的32个 这些关键字不需要特意去记,在我们日后写代码的过程中会慢慢用到并记住。 2.…

以太网详解(六)OSI 七层模型

文章目录 OSI : Open System Interconnect(Reference Model)第七层:应用层(Application)第六层:表示层(Presentation)第五层:会话层(Session)第四…

【Python】 python实现我的世界(Minecraft)计算器(重制版)

【Python】 python实现我的世界(Minecraft)计算器 文章目录 【Python】 python实现我的世界(Minecraft)计算器1.引言与原理2.写代码之前的配置1.BuidTools.jar文件配置服务器2.raspberryjuice-1.12.1.jar用python控制服务器 3.第三方库mcpi的基本方法4.计算器构建的思路5.源码展…

STM32使用VScode开发

文章目录 Makefile形式创建项目新建stm项目下载stm32cubemx新建项目IED makefile保存到本地arm gcc是编译的工具链G++配置编译Cmake +vscode +MSYS2方式bilibiliMSYS2 统一环境配置mingw32-make -> makewindows环境变量Cmake CmakeListnijia 编译输出elfCMAKE_GENERATOR查询…

uni-app 程序打包 Android apk、安卓夜神模拟器调试运行

1、打包思路 云端打包方案(每天免费次数限制5,最简单,可以先打包尝试一下你的程序打包后是否能用): HBuilderX 发行App-Android云打包 选择Android、使用云端证书、快速安心打包本地打包: HBuilderX …

Hugging Face 推出最小体积多模态模型,浏览器运行成为现实!

1. SmolVLM 模型家族简介 1.1 什么是 SmolVLM-256M 和 SmolVLM-500M,它们为何如此重要? 在人工智能的多模态模型领域,如何在有限的计算资源下实现强大性能一直是一个重要的挑战。SmolVLM-256M 和 SmolVLM-500M 是最近推出的两款视觉语言模型,它们不仅突破了传统“大模型”…

速通Docker === Docker Compose

目录 Docker Compose 简介 Docker Compose 常用命令 使用 Docker Compose 启动 WordPress 普通启动方式(使用 Docker 命令) 使用 Docker Compose 启动 Docker Compose 的特性 Docker Compose 简介 Docker Compose 是一个用于定义和运行多容器 Dock…

MySQL误删数据怎么办?

文章目录 1. 从备份恢复数据2. 通过二进制日志恢复数据3. 使用数据恢复工具4. 利用事务回滚恢复数据5. 预防误删数据的策略总结 在使用MySQL进行数据管理时,误删数据是一个常见且具有高风险的操作。无论是因为操作失误、系统故障,还是不小心执行了删除命…

AAAI2024论文合集解读|Multi-granularity Causal Structure Learning-water-merged

论文标题 Multi-granularity Causal Structure Learning 多粒度因果结构学习 论文链接 Multi-granularity Causal Structure Learning 论文下载 论文作者 Jiaxuan Liang, Jun Wang, Guoxian Yu, Shuyin Xia, Guoyin Wang 内容简介 本文提出了一种新颖的方法,…

python3+TensorFlow 2.x(二) 回归模型

目录 回归算法 1、线性回归 (Linear Regression) 一元线性回归举例 2、非线性回归 3、回归分类 回归算法 回归算法用于预测连续的数值输出。回归分析的目标是建立一个模型,以便根据输入特征预测目标变量,在使用 TensorFlow 2.x 实现线性回归模型时&…

【景区导游——LCA】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int N 1e5 10; const int M 2 * N; int p[N][18], d[N], a[N]; ll dis[N][18]; //注意这里要开long long int h[N], e[M], ne[M], idx, w[M]; int n, k; void add(int a, int b, …

家政预约小程序11分类展示

目录 1 创建页面2 配置导航菜单3 配置侧边栏选项卡4 配置数据列表5 首页和分类页联动总结 我们现在在首页开发了列表显示服务信息的功能&#xff0c;在点击导航菜单的时候&#xff0c;需要自动跳转到对应的分类&#xff0c;本篇我们介绍一下使用侧边栏选项卡实现分类显示的功能…

CVE-2023-38831 漏洞复现:win10 压缩包挂马攻击剖析

目录 前言 漏洞介绍 漏洞原理 产生条件 影响范围 防御措施 复现步骤 环境准备 具体操作 前言 在网络安全这片没有硝烟的战场上&#xff0c;新型漏洞如同隐匿的暗箭&#xff0c;时刻威胁着我们的数字生活。其中&#xff0c;CVE - 2023 - 38831 这个关联 Win10 压缩包挂…

WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证

WPF进阶 | WPF 数据绑定进阶&#xff1a;绑定模式、转换器与验证 一、前言二、WPF 数据绑定基础回顾2.1 数据绑定的基本概念2.2 数据绑定的基本语法 三、绑定模式3.1 单向绑定&#xff08;One - Way Binding&#xff09;3.2 双向绑定&#xff08;Two - Way Binding&#xff09;…

Java Swing 基础组件详解 [论文投稿-第四届智能系统、通信与计算机网络]

大会官网&#xff1a;www.icisccn.net Java Swing 是一个功能强大的 GUI 工具包&#xff0c;提供了丰富的组件库用于构建跨平台的桌面应用程序。本文将详细讲解 Swing 的基础组件&#xff0c;包括其作用、使用方法以及示例代码&#xff0c;帮助你快速掌握 Swing 的核心知识。 一…

题解 信息学奥赛一本通/AcWing 1118 分成互质组 DFS C++

题目 传送门 AcWing 1118. 分成互质组 - AcWing题库https://www.acwing.com/problem/content/1120/https://www.acwing.com/problem/content/1120/https://www.acwing.com/problem/content/1120/https://www.acwing.com/problem/content/1120/https://www.acwing.com/proble…

论文阅读笔记:VMamba: Visual State Space Model

论文阅读笔记&#xff1a;VMamba: Visual State Space Model 1 背景2 创新点3 方法4 模块4.1 2D选择性扫描模块&#xff08;SS2D&#xff09;4.2 加速VMamba 5 效果5.1 和SOTA方法对比5.2 SS2D和自注意力5.3 有效感受野5.4 扫描模式 论文&#xff1a;https://arxiv.org/pdf/240…

技术总结:FPGA基于GTX+RIFFA架构实现多功能SDI视频转PCIE采集卡设计方案

目录 1、前言工程概述免责声明 3、详细设计方案设计框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGBFDMA图像缓存RIFFA用户数据控制RIFFA架构详解Xilinx 7 Series Integrated Block for PCI ExpressRIFFA驱动及其安装QT上位机HDMI输出RGB转BT…

03:Heap代码的分析

Heap代码的分析 1、内存对齐2、Heap_1.c文件代码分析3、Heap_2.c文件代码分析4、Heap_4.c文件代码分析5、Heap_5.c文件代码分析 1、内存对齐 内存对齐的作用是为了CPU更快的读取数据。对齐存储与不对齐存储的情况如下&#xff1a; 计算机读取内存中的数据时是一组一组的读取的…