C# 开源SDK 工业相机库 调用海康相机 大恒相机

embedded/2024/9/22 17:05:33/

C# MG.CamCtrl 工业相机

    • 介绍
    • 一、使用案例
    • 二、使用介绍
      • 1、工厂模式创建实例
      • 2、枚举设备,初始化
      • 3、启动相机
      • 4、取图
      • 5、注销相机
    • 三、接口
        • 1、相机操作
        • 2、启动方式
        • 3、取图
        • 4、设置/获取参数

介绍

c# 相机库,含海康、大恒品牌2D相机的常用功能。
底层采用回调+信号量模式封装 ,最大程度减小线程资源,提高采图效率。

开源地址:https://gitee.com/laomaogu/mgcamctrl

现只兼容了大恒和海康,都是常用的
其他相机,看我老板啥时候换品牌吧,或者换老板?
当然如果小伙伴感兴趣,可以在这个框架下直接添加

一、使用案例

Sample路径下放了案例


在这里插入图片描述


二、使用介绍

注意:
一定要设置为 x64 编译平台

Created with Raphaël 2.3.0 开始 创建实例 枚举SN 初始化 启动相机,并开始采集 注销相机 结束

1、工厂模式创建实例

ICamera myCamera;
myCamera= CamFactory.CreatCamera(CameraBrand.HIK);//CameraBrand.DaHeng

2、枚举设备,初始化

选取对应SN号的相机,初始化相机

调试的时候,经常直接中断程序
程序Kill了,但相机还未注销。。。。。。
导致每次中断重启都连不上相机,要重新断电才行

所以在初始化的时候都加了心跳(仅支持网口),
断连超1000ms后,相机就自动注销,
下次能直接连接相机啦!
中断算个diao,哈哈哈哈

 //获取相机枚举
var devicelist = myCamera.GetListEnum();
//or
//var devicelist = CamFactory.GetDeviceEnum(CameraBrand.HIK); //选对应SN,初始化相机 
myCamera.InitDevice(devicelist.First());

3、启动相机

启动相机有以下几种方式:

  • 常规硬触发
  • 常规软触发
  • 硬触发 + 回调
  • 软触发 + 回调
 //硬触发模式  启动相机
myCamera.StartWith_HardTriggerModel(HardTriggerModel.Line0); //软触发模式  启动相机
//myCamera.StartWith_SoftTriggerModel(); //硬触发 + 回调模式  启动相机
// myCamera.StartWith_HardTriggerModel_SetCallback(HardTriggerModel.Line0, CameraCallBack); //软触发 + 回调模式  启动相机
//myCamera.StartWith_SoftTriggerModel_SetCallback(CameraCallBack); 

回调函数:

/// <summary>
/// 回调函数
/// </summary>
/// <param name="bmp"></param>
private void CameraCallBack(Bitmap bmp)
{//执行取图后的操作bmp.Save("./test.bmp");
}

4、取图

为了能兼容其他视觉平台,图像格式为Bitmap
这样无论是OpenCV Halcon VisionPro 都可任意转换想要的格式

//等待硬触发 获取图片, 设定超时:5000ms
myCamera.GetImage(out Bitmap CaptureImage,5000);
//or 使用默认超时时间
//myCamera.GetImage(out Bitmap CaptureImage);//软触发获取图像
//myCamera.GetImageWithSoftTrigger(out Bitmap CaptureImage);/// <summary>
/// 回调函数
/// </summary>
/// <param name="bmp"></param>
private void CameraCallBack(Bitmap bmp)
{//执行取图后的操作bmp.Save("./test.bmp");
}

5、注销相机

//注销当前实例
myCamera.CloseDevice();
or
//CamFactory.DestroyCamera(myCamera);
or
//CamFactory.DestroyAll();   

三、接口

1、相机操作
接口描述
List < string > GetListEnum()获取相机SN枚举
bool InitDevice(string CamSN)初始化相机
void CloseDevice()注销相机
2、启动方式
接口描述
bool StartWith_Continue_SetCallback(Action callbackfunc)回调 + 循环采图 启动相机
bool StartWith_SoftTriggerModel()软触发模式 启动相机
bool StartWith_HardTriggerModel(TriggerSource hardtriggeritem)硬触发模式 启动相机
bool StartWith_HardTriggerModel_SetCallback(TriggerSource hardtriggeritem, Action callbackfunc)硬触发 + 回调 启动相机
bool StartWith_SoftTriggerModel_SetCallback(Action callbackfunc)软触发 + 回调 启动相机
3、取图
接口描述
bool GetImage(out Bitmap bitmap, int outtime = 3000)等待硬触发获取图像
bool GetImageWithSoftTrigger(out Bitmap bitmap, int outtime = 3000)软触发获取图像
bool SoftTrigger()软触发
回调取图(详情见案例)
4、设置/获取参数
接口描述
void SetCamConfig(CamConfig config)设置相机参数
void GetCamConfig(out CamConfig config)获取相机参数
bool SetTriggerMode(TriggerMode mode, TriggerSource triggerEnum = TriggerSource.Line0)设置触发模式及触发源
bool GetTriggerMode(out TriggerMode mode, out TriggerSource hardTriggerModel)获取触发模式及触发源
bool SetExpouseTime(ushort value)设置曝光时长
bool GetExpouseTime(out ushort value)获取曝光时长
bool SetTriggerPolarity(TriggerPolarity polarity)设置硬触发极性
bool GetTriggerPolarity(out TriggerPolarity polarity)获取硬触发极性
bool SetTriggerFliter(ushort flitertime)设置触发滤波时间 (us)
bool GetTriggerFliter(out ushort flitertime)获取触发滤波时间 (us)
bool SetTriggerDelay(ushort delay)设置触发延时
bool GetTriggerDelay(out ushort delay)获取触发延时
bool SetGain(short gain)设置增益
bool GetGain(out short gain)获取增益值
bool SetLineMode(IOLines line, LineMode mode)设置信号线模式
bool SetLineStatus(IOLines line, LineStatus linestatus)设置信号线电平状态
bool GetLineStatus(IOLines line, out LineStatus lineStatus)获取信号线电平状态
bool AutoBalanceWhite()自动白平衡

http://www.ppmy.cn/embedded/7016.html

相关文章

网络篇10 | 网络层 IP

网络篇10 | 网络层 IP 01 简介02 名称解释03 IP报文格式(IPv4)1&#xff09;4位版本协议(version)2&#xff09;4位首部长度(header length)3&#xff09;8位服务类型(Type Of Service, TOS)4&#xff09;16位总长度5&#xff09;16位(分片)标识6&#xff09;3位(分片)标志7&am…

go 语言 mage 安装踩坑

具体安装代码&#xff1a;mage 官方地址&#xff1a;Mage :: Mage git clone https://github.com/magefile/mage cd mage go run bootstrap.go 在go部署完后&#xff0c;执行上面的脚本&#xff0c;发现最后一句老是执行不成功&#xff1a; rootBDGF-7FPQW93:/home/gw00241401…

使用脚本启动和关闭微服务

使用脚本启动和关闭微服务 一、前言二、启动1、处理每个服务2、编写启动脚本3、其他启动脚本&#xff08;无效&#xff0c;有兴趣可以看看&#xff09;4、启动 三、关闭1、测试拿服务进程id的命令是否正确2、编写关闭脚本3、关闭 一、前言 假如在服务器中部署微服务不使用 doc…

欧拉公式;傅里叶变换;自然数e;虚数

目录 欧拉公式 从X轴观察室Sin 从y轴观察室cos 单位时间t转一圈:2pai*t 矢量和标量

HarmonyOS Next 视频弹幕功能

视频弹幕功能 介绍 本示例介绍如何使用ohos.danmakuflamemaster和ohos.gsyvideoplayer开发支持视频弹幕的播放器。可以自定义弹幕样式、占据屏幕宽度&#xff0c;发送弹幕&#xff0c;开关弹幕视图。 效果图预览 使用说明 点击播放按钮&#xff0c;进行视频播放&#xff0c…

基于python网络爬虫的二手房源数据采集及可视化分析的设计与实现

基于python网络爬虫的二手房源数据采集及可视化分析的设计与实现 Design and Implementation of Data Collection and Visualization Analysis of Second-hand Housing Listings Based on Python Web Scraping 完整下载链接:基于python网络爬虫的二手房源数据采集及可视化分析…

Postman之全局变量与环境变量配置

实际开发中可能需要不停切换环境&#xff0c;接口中来回输入环境地址比较麻烦&#xff0c;故而通过定义变量来节约频繁更换测试地址所耗费的时间。Postman 允许定义自己的全局变量&#xff08;Globals&#xff09;与环境变量&#xff08;Environment&#xff09;&#xff0c;最…

[论文笔记]Root Mean Square Layer Normalization

引言 今天带来论文Root Mean Square Layer Normalization的笔记&#xff0c;论文题目是均方根层归一化。 本篇工作提出了RMSNorm&#xff0c;认为可以省略重新居中步骤。 简介 层归一化对Transformer等模型非常重要&#xff0c;它可以帮助稳定训练并提升模型收敛性&#xf…