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

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.mzph.cn/news/827075.shtml

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

相关文章

ai扩写软件有哪些免费的?分享4款扩写好用的!

随着人工智能技术的飞速发展&#xff0c;AI扩写软件逐渐成为了内容创作者们的得力助手。它们能够迅速将简短的文案扩写成内容丰富、结构完整的文章&#xff0c;大大提高了创作效率。本文将为您盘点几款免费的AI扩写软件&#xff0c;助您在今日头条、百家号等自媒体平台上轻松打…

P8837 [传智杯 #3 决赛] 商店(贪心加双指针)

题目背景 思路解析:很经典的贪心问题,把物品按照从便宜到贵的顺序排好序,然后按照富贵程度排人,直接暴力会tle所以这里采用双指针. #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<string> using namesp…

quill富文本编辑器中文汉化和高度设置操作

quill文档&#xff1a;Installation - Quill Rich Text Editor quill仓库&#xff1a;GitHub - quilljs/quill: Quill is a modern WYSIWYG editor built for compatibility and extensibility. quill默认是英文的&#xff0c;并且高度也是只有一行&#xff0c;所以想自定义高…

C++——类和对象练习(日期类)

日期类 1. 构造函数和析构函数2. 拷贝构造和赋值运算符重载3. 运算符重载3.1 日期的比较3.2 日期加减天数3.3 日期减日期3.4 流插入和流提取 4. 取地址和const取地址重载5. 完整代码Date.hDate.c 对日期类进行一个完善&#xff0c;可以帮助我们理解六个默认成员函数&#xff0c…

软件行业中的蓝海领域有哪些?

一、什么是蓝海&#xff1f; 蓝海&#xff0c;指的是未知的市场空间。这个概念相对于“红海”而言&#xff0c;红海则是指已知的市场空间。 企业要启动和保持获利性增长&#xff0c;就必须超越产业竞争&#xff0c;开创全新市场&#xff0c;这其中包括两块&#xff1a;一块是…

【软件测试】Selenium实战技巧-多页面和Windows控件处理

01 多页面处理 做UI自动化的时候常常会遇到浏览器弹出新的Tab页&#xff0c;或者需要在多个网页服务之间来回取数据的情况。 比如在首页点击文章“Jmeter使用&#xff1f;”的链接&#xff0c;浏览器会弹出一个新的页面显示“Jmeter使用&#xff1f;”这篇文章的详情。此时如…

Python多线程与多进程编程

一、引言 随着计算机技术的飞速发展&#xff0c;程序运行的速度和效率成为了人们关注的焦点。为了提高程序的执行效率&#xff0c;多线程与多进程编程技术应运而生。Python作为一种通用编程语言&#xff0c;在支持多线程与多进程编程方面有着独特的优势。本文将详细探讨Python…

书生·浦语大模型实战营之 XTuner 微调 Llama 3 个人小助手认知

书生浦语大模型实战营之 XTuner 微调 Llama 3 个人小助手认知 Llama 3 近期重磅发布,发布了 8B 和 70B 参数量的模型,XTuner 团队对 Llama 3 微调进行了光速支持!!!开源同时社区中涌现了 Llama3-XTuner-CN 手把手教大家使用 XTuner 微调 Llama 3 模型。 XTuner:http://…

牛客NC238 加起来和为目标值的组合【中等 DFS C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/172e6420abf84c11840ed6b36a48f8cd 思路 本题是组合问题&#xff0c;相同元素不同排列仍然看作一个结果。 穷经所有的可能子集&#xff0c;若和等于target&#xff0c;加入最终结果集合。 给nums排序是为了方便…

计算机网络【CN】Ch4 网络层

总结 一台主机可以有多个IP地址&#xff0c;但是必须属于多个逻辑网络【不同的网络号】。 解决IP地址耗尽&#xff1a; IP地址结构&#xff1a; 划分子网&#xff1a;&#x1d43c;&#x1d443;地址<网络号>,<子网号>,<主机号> CIDR&#xff1a;IP地址{&…

智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法

智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法 目录 智能算法 | Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法效果一览基本介绍程序设计参考资料效果一览 基本介绍 Matlab基于CBES融合自适应惯性权重和柯西变异的秃鹰搜索算法 融合自适应…

pycharm爬虫模块(scrapy)基础使用

今天学了个爬虫。在此记录 目录 一.通过scrapy在命令行创建爬虫项目 二.判断数据为静态还是动态 三.pycharm中的设置 三:爬虫主体 四.pipelines配置&#xff08;保存数据的&#xff09; 五.最终结果 一.通过scrapy在命令行创建爬虫项目 1.首先需要在cmd中进入到python文…

华为od机试真题——智能成绩表

题目描述 算法结果 3 3 math chinese english z3 71 81 91 l4 81 71 93 w5 21 91 95 math l4 81 71 93 245 z3 71 81 91 243 w5 21 91 95 207 算法详情 public class SmartScoreTable {public static void main(String[] args) {// 输入Scanner scanner new Scanner(Syste…

一款pdf工具

下载链接&#xff1a;点击跳转&#xff1b; 它是一个installer&#xff0c;下好它之后&#xff0c;把网断掉&#xff0c;然后双击它&#xff0c;他会默认安装在C盘&#xff0c;安装时&#xff0c;浏览器可能会有一个弹窗&#xff0c;直接关掉并进入任务管理器杀掉所有smallerp…

小清新思维题

CF521D shop Problem Solution 首先如果确定了执行的操作&#xff0c;执行顺序一定为赋值、加、乘。赋值操作只保留最大的&#xff0c;并可以转化为加法。每个数的加法操作按从大到小顺序排序后可以转化为乘法。最后将所有乘法操作从大到小排序选前&#x1d45a;个即可。 先…

VMware 15 虚拟机网络遇到的问题

剧情提要 通过Cent os7 的镜像文件&#xff0c;创建了一个虚拟机A&#xff08;后面简称A&#xff09;&#xff0c;事后发现&#xff0c;宿主机无法ping通A 在虚拟机中通过IP a 看到的IP信息也没有只管的ip信息如图 然后执行&#xff0c;宿主机才能访问A。 sudo dhclient ens…

四信AI睿析—边缘智脑:赋能农业新时代,开启智慧种植新篇章

方案简介 本系统前端安装土壤墒情监测站&#xff0c;包括温湿度传感器、二氧化碳传感器、PH值传感器、土壤电导率传感器、土壤温湿度传感器、光照传感器等组成&#xff1b;高清枪机摄像头等、负责种植区域温湿度、土壤EC、土壤温湿度、光照等环境因子、视频数据、农作物生长图…

加速大数据分析:Apache Kylin使用心得与最佳实践详解

Apache Kylin 是一个开源的分布式分析引擎&#xff0c;提供了Hadoop之上的SQL接口和多维分析&#xff08;OLAP&#xff09;能力以支持大规模数据。它擅长处理互联网级别的超大规模数据集&#xff0c;并能够进行亚秒级的查询响应时间。Kylin 的主要使用场景包括大数据分析、交互…

全自动开箱机:从原理到应用,全面解析自动化装箱技术

随着科技的飞速发展&#xff0c;自动化技术在各行各业的应用越来越广泛。其中&#xff0c;全自动开箱机作为现代物流领域的重要设备&#xff0c;以其高效、精准的特点&#xff0c;受到了广大企业的青睐。与星派全面解析全自动开箱机的原理、应用领域以及它所带来的变革。 一、…

Vins-mono中的IMU预积分【SLAM】

世界系下连续时间的IMU积分 w w w代表世界系&#xff0c; b k b_{k} bk​代表第k帧图像。 在 [ t k , t k 1 ] [t_{k}, t_{k1}] [tk​,tk1​]时间段内&#xff0c;有通过加速度和角速度在连续时间下的积分&#xff1a; p b k 1 w p b k w v b k w Δ t k ∬ t ∈ [ t k ,…