海康威视相机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
相关推荐
YOLO数据集集合7 小时前
基准标记目标检测数据集 |基准标记 视觉定位 相机标定 目标检测 YOLO格式 深度学习数据集 计算机9038期
数码相机·yolo·目标检测·视觉定位·基准标定
yue0089 小时前
winform控件篇-按钮
c#
陈珙9 小时前
.NET AI 实战:用 MCP 把 Claude Code 变成数据库 DBA
架构·.net·技术
DevOpenClub13 小时前
Markdown、HTML 和 PPT 如何稳定交付:文档转换任务的幂等发布流程
开发语言·前端·c#·html·powerpoint
软件黑马王子14 小时前
3.单例模式问题1:构造函数
开发语言·单例模式·c#
软件黑马王子14 小时前
4.单例模式问题2:重复挂载
开发语言·单例模式·c#
夏霞16 小时前
c# 不支持的目标框架 解决方案
开发语言·c#
软件黑马王子16 小时前
5.单例模式问题3:多线程问题
单例模式·前端框架·c#
geovindu16 小时前
CSharp: Template Method Pattern
开发语言·后端·c#·.net·模板方法模式·行为模式
CSDN_RTKLIB16 小时前
SetImpliedSelection
c#