海康威视相机C#二次开发环境配置

文章目录

安装

首先,下载MVS,安装完成之后,其【Development】文件夹即用于二次开发,该路径下【Documentations】提供了多种语言的二次开发教程,其中C#教程是chm格式,其版本号为文档版本号,查阅最新版即可;【Samples】则提供了各种编程语言的示例,其中,C#的示例程序包含两组,旧版基于.Net Framework 3.5 开发,V2版本基于.NET5,官方推荐使用V2版本。

【Development/Donet】下即为C#开发所需的SDK,本文采用【AnyCpu/netstandard2.0】,进行开发。.NetStandard其实是一个挺古老的概念了,当年.net生态比较混乱,既有Core,又有Framework。.Net Standard最后一个版本的版本号是2.1,在.NET Core3.0中被引入,但并不支持.NET Framework4.8,从而2.0成了Framework和Core最后的桥梁。

后来.NET的数字版本一统天下,Core和Framework都很少见了,Standard就更没什么人提了,但.Net Standard2.0可以兼容.NET5以上版本。官方V2版本的示例程序,就是基于.NET5开发的。

新建项目和相机初始化

下面用VS新建一个WPF项目,框架使用.NET 10.0,在右侧【解决方案资源管理器】选项卡中,右键【依赖项】,选择【添加项目引用】,找到安装路径中的【...\Development\DotNet\AnyCpu\netstandard2.0】,添加【MvCameraControl.Net.dll】。

添加完成后,在【依赖项/程序集】下面,可以找到【MvCameraControl.Net】,选中后,更改下方属性,将复制本地改为是。然后就可以在C#代码中引用其命名空间了

cs 复制代码
using MvCameraControl;

为了使用海康威视的SDK,需要对其进行初始化,以便于提前申请和分配所必须的系统资源,在WPF项目中,可以放在窗口组件初始化之后

cs 复制代码
public MainWindow()
{
    InitializeComponent();
    SDKSystem.Initialize();
}

在退出程序时,可对其反初始化,释放海康SDK占用的资源。在xaml设计窗口,在中添加

xml 复制代码
<Window 
    Closed="Window_Closed">

对应C#代码为

cs 复制代码
private void Window_Closed(object sender, EventArgs e)
{
    SDKSystem.Finalize();
}

扫描相机

下面实现扫描相机的功能,示例如下

在xaml中创建一组ComboBox和Button,内容如下

xml 复制代码
<StackPanel Orientation="Horizontal">
    <ComboBox x:Name="cbList" Width="150" Margin="5"/>
    <Button Content="扫描设备" Margin="5" Click="btnGetDeviceName_Click"/>
</StackPanel>

其扫描按钮的点击操作为

csharp 复制代码
private void btnGetDeviceName_Click(object sender, RoutedEventArgs e)
{
    List<IDeviceInfo> devInfoList = null;
    int ret = DeviceEnumerator.EnumDevices(DeviceTLayerType.MvGigEDevice, out devInfoList);
    if (ret == MvError.MV_OK)
    {
        cbList.Items.Clear();
        cbList.ItemsSource = devInfoList;
    }
}

【DeviceEnumerator.EnumDevices】就是海康威视提供的设备枚举函数,其输入参数分别是设备类别和输出的设备信息列表。

设备类别可选项如下,可用或运算符叠加。

cs 复制代码
DeviceTLayerType.MvGigEDevice
DeviceTLayerType.MvUsbDevice
DeviceTLayerType.MvGenTLCXPDevice
DeviceTLayerType.MvGenTLXoFDevice
相关推荐
浪里镖客6 小时前
realsense d435i相机所有内外参获得
数码相机
大锅盖16 小时前
Web 工单要调用相机,第一步不是打开取景框,而是建立能力门禁
前端·数码相机·harmonyos
吴可可1237 小时前
C#重写机制与CAD图元开发要点
c#
A_nanda7 小时前
c#WPF开发常见问题
开发语言·c#·wpf
唐青枫7 小时前
别只会解析参数:C#.NET Spectre.Console.Cli 命令行工具实战详解
c#·.net
AI刀刀8 小时前
腾讯元宝粘贴到 word 格式混乱,AI 导出鸭一键规整排版
人工智能·c#·word·ai导出鸭
市象8 小时前
暑期档市占3%,全景相机距离影像主赛道还有点远
数码相机·全景相机·手持影像
微小冷9 小时前
海康威视相机C#二次开发指图像采集
数码相机·c#·二次开发·机器视觉·海康威视·mvs·相机开发
rick97711 小时前
WinForms 父子窗体数据传递的进化之路:从参数注入到事件回传的完美闭环
c#