C# MG.CamCtrl 工业相机库(开源) 海康 大恒
C# MG.CamCtrl 相机库(开源) 海康 大恒
- 介绍
- 工厂模式创建实例
- 选取对应SN号的相机,初始化
- 启动相机
- 取图
- 注销相机
- 参数设置/获取
- 接口
介绍
c# 相机库,含海康、大恒品牌2D相机的常用功能。
底层采用回调+信号量模式封装 ,最大程度减小线程资源,提高采图效率。
开源地址:(整理后贴出)
功能持续完善中。。。
工厂模式创建实例
ICamera myCamera;
myCamera= CamFactory.CreatCamera(CameraBrand.HIK);//CameraBrand.DaHeng
选取对应SN号的相机,初始化
//获取相机枚举
var devicelist = myCamera.GetListEnum();
//or
//var devicelist = CamFactory.GetDeviceEnum(CameraBrand.HIK); //选对应SN,初始化相机
myCamera.InitDevice(devicelist.First());
启动相机
启动相机有以下几种方式:
- 常规硬触发
- 常规软触发
- 硬触发 + 回调
- 软触发 + 回调
//硬触发模式 启动相机
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");
}
取图
//等待硬触发 获取图片, 设定超时: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");
}
注销相机
//注销当前实例
myCamera.CloseDevice();
or
//CamFactory.DestroyCamera(newcamera);
or
//CamFactory.DestroyAll();
参数设置/获取
含常用参数设置和获取
如曝光值、延时、硬触发方式等
详细见接口小节
接口
namespace MG.CamCtrl
{public interface ICamera : IDisposable{#region operate/// <summary>/// 获取相机SN枚举/// </summary>/// <returns></returns>List<string> GetListEnum();/// <summary>/// 初始化相机/// </summary>/// <param name="CamSN"></param>/// <returns></returns>bool InitDevice(string CamSN);/// <summary>/// 注销相机/// </summary>void CloseDevice();/// <summary>/// 回调 + 循环采图 启动相机/// </summary>/// <param name="callbackfunc"></param>/// <returns></returns>bool StartWith_Continue_SetCallback(Action<Bitmap> callbackfunc);/// <summary>/// 软触发模式 启动相机/// </summary>/// <returns></returns>bool StartWith_SoftTriggerModel();/// <summary>/// 硬触发模式 启动相机/// </summary>/// <param name="hardtriggeritem"></param>/// <returns></returns>bool StartWith_HardTriggerModel(TriggerSource hardtriggeritem);/// <summary>/// 硬触发 + 回调 启动相机/// </summary>/// <param name="hardtriggeritem"></param>/// <param name="callbackfunc"></param>/// <returns></returns>bool StartWith_HardTriggerModel_SetCallback(TriggerSource hardtriggeritem, Action<Bitmap> callbackfunc);/// <summary>/// 软触发 + 回调 启动相机/// </summary>/// <param name="callbackfunc"></param>/// <returns></returns>bool StartWith_SoftTriggerModel_SetCallback(Action<Bitmap> callbackfunc);/// <summary>/// 等待硬触发获取图像/// </summary>/// <param name="bitmap"></param>/// <param name="outtime"></param>/// <returns></returns>bool GetImage(out Bitmap bitmap, int outtime = 3000);/// <summary>/// 软触发获取图像/// </summary>/// <param name="bitmap"></param>/// <param name="outtime"></param>/// <returns></returns>bool GetImageWithSoftTrigger(out Bitmap bitmap, int outtime = 3000);/// <summary>/// 软触发/// </summary>/// <returns></returns>bool SoftTrigger();#endregion#region SettingConfig/// <summary>/// 设置相机参数/// </summary>/// <param name="config"></param>void SetCamConfig(CamConfig config);/// <summary>/// 获取相机参数/// </summary>/// <param name="config"></param>void GetCamConfig(out CamConfig config);/// <summary>/// 设置触发模式及触发源/// </summary>/// <param name="mode"></param>/// <param name="triggerEnum"></param>/// <returns></returns>bool SetTriggerMode(TriggerMode mode, TriggerSource triggerEnum = TriggerSource.Line0);/// <summary>/// 获取触发模式及触发源/// </summary>/// <param name="mode"></param>/// <param name="hardTriggerModel"></param>/// <returns></returns>bool GetTriggerMode(out TriggerMode mode, out TriggerSource hardTriggerModel);/// <summary>/// 设置曝光时长/// </summary>/// <param name="value"></param>/// <returns></returns>bool SetExpouseTime(ushort value);/// <summary>/// 获取曝光时长/// </summary>/// <param name="value"></param>/// <returns></returns>bool GetExpouseTime(out ushort value);/// <summary>/// 设置硬触发极性/// </summary>/// <param name="polarity"></param>/// <returns></returns>bool SetTriggerPolarity(TriggerPolarity polarity);/// <summary>/// 获取硬触发极性/// </summary>/// <param name="polarity"></param>/// <returns></returns>bool GetTriggerPolarity(out TriggerPolarity polarity);/// <summary>/// 设置触发滤波时间 (us)/// </summary>/// <param name="flitertime"></param>/// <returns></returns>bool SetTriggerFliter(ushort flitertime);/// <summary>/// 获取触发滤波时间 (us)/// </summary>/// <param name="flitertime"></param>/// <returns></returns>bool GetTriggerFliter(out ushort flitertime);/// <summary>/// 设置触发延时/// </summary>/// <param name="delay"></param>/// <returns></returns>bool SetTriggerDelay(ushort delay);/// <summary>/// 获取触发延时/// </summary>/// <param name="delay"></param>/// <returns></returns>bool GetTriggerDelay(out ushort delay);/// <summary>/// 设置增益/// </summary>/// <param name="gain"></param>/// <returns></returns>bool SetGain(short gain);/// <summary>/// 获取增益值/// </summary>/// <param name="gain"></param>/// <returns></returns>bool GetGain(out short gain);/// <summary>/// 设置信号线模式/// </summary>/// <param name="line"></param>/// <param name="mode"></param>/// <returns></returns>bool SetLineMode(IOLines line, LineMode mode);/// <summary>/// 设置信号线电平状态/// </summary>/// <param name="line"></param>/// <param name="linestatus"></param>/// <returns></returns>bool SetLineStatus(IOLines line, LineStatus linestatus);/// <summary>/// 获取信号线电平状态/// </summary>/// <param name="line"></param>/// <param name="lineStatus"></param>/// <returns></returns>bool GetLineStatus(IOLines line, out LineStatus lineStatus);/// <summary>/// 自动白平衡/// </summary>/// <returns></returns>bool AutoBalanceWhite();#endregion}
}相关文章:
C# MG.CamCtrl 工业相机库(开源) 海康 大恒
C# MG.CamCtrl 相机库(开源) 海康 大恒 介绍工厂模式创建实例选取对应SN号的相机,初始化启动相机取图注销相机参数设置/获取接口 介绍 c# 相机库,含海康、大恒品牌2D相机的常用功能。 底层采用回调信号量模式封装 ,最…...
【Redis】redis的基本使用
📝个人主页:五敷有你 🔥系列专栏:Redis ⛺️稳中求进,晒太阳 Redis的概述 为什么要有redis? redis是数据库,mysql也是数据库,redis做缓存的意义就是为了减轻数据库压力 数据库为什么…...
植物病害识别:YOLO水稻病害识别数据集(3000多张,3个类别,yolo标注)
YOLO水稻病害识别数据集,包含细菌性枯萎病,水稻瘟疫,褐斑病3个常见病害类别,共3000多张图像,yolo标注完整,可直接训练。 适用于CV项目,毕设,科研,实验等 需要此数据集或…...
Java实现Tron(波场)区块链的开发实践(三)波场链水龙头、WEB3测试实战
上一节我们具体讲到Java实现Tron波场链的逻辑代码实现。 这一节我们通过部署和开发好的代码,针对测试链进行自测开发,准备测试环境。 1. 创建离线地址 首先我们需要一个离线地址,我们不需要在线进行创建,直接可以通过第一节的离…...
010-$nextTick
$nextTick 1、问题2、$nextTick3、应用场景 1、问题 Vue 实现响应式,在 data 更新后,一定时间内,没有继续操作DOM,然后会触发浏览器渲染引擎去更新DOM,更新DOM也是需要时间的,所以 data 更新引起的 DOM更新…...
[IAGC] Kafka消费者组的负载均衡策略
在Apache Kafka中,负载均衡是通过将主题的每个分区分配给消费者组中的一个消费者来实现的。Kafka的负载均衡算法会尽可能平均地将分区分配给每个消费者。 文章目录 分配策略Kafka的重新平衡扩展性参考资源 分配策略 在Kafka中,有两种内置的分区分配策略…...
2024年会声会影 迎接来了七大新功能
我喜欢Corel VideoStudio 会声会影2024旗舰版,因为它使用起来很有趣。它很容易使用,但仍然给你很多功能和力量。VideoStudio让我与世界分享我的想法!“这个产品的功能非常多,我几乎没有触及它的表面,我可以做大量的编辑…...
AIGC、3D模型、轻量化、格式转换、可视化、数字孪生引擎等(老子云三维模型可视化优化服务平台)
老子云概述 老子云3D可视化快速开发平台,集云压缩、云烘焙、云存储云展示于一体,使3D模型资源自动输出至移动端PC端、Web端,能在多设备、全平台进行展示和交互,是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 基于 H…...
JMM(Java Memory Model)内存模型
Java内存模型,规范了计算机内存与java虚拟机之间的协调工作,即规定了 将java 虚拟机中的变量存储到内存中和从内从中取出来的内存细节。 Java内存模型中规定了所有的变量都存储在内存中,每条线程还有自己的工作内存,线程对变量的…...
.NET 简介:跨平台、开源、高性能的开发平台
.NET 简介 .NET 是微软开发的一个免费、开源、跨平台的开发人员平台,用于构建各种类型的应用程序。它可以运行使用多种语言编写的程序,其中 C# 是最常用的语言。.NET 依赖于许多大规模应用在生产中使用的高性能运行时。 .NET 平台具有以下特点…...
m序列生成器
function [m] mserial_generator(tap_set) % m序列产生器 % 输出为m序列,未进行极性变换。 L 2^(length(tap_set)-1)-1; x [zeros(1,(length(tap_set)-2)) 1]; for i 1:1:Lm(i)x(end);for j 1:1:length(tap_set)-1sum_vector(j)tap_set(j1)*x(j);endsum_x mod…...
go的数据类型看这一篇就够了
目录 一:类型分类 二:介绍 一:类型分类 go的数据类型包含11种,可以分为以下四类。 1:基础类型:布尔,数字和字符串: 2:复合类型:数组和结构体 3:引用类型: 指针,channel通道,切片,map字典,函数 4:接口类型 二:介绍 1:布尔 一个布尔类型的值只有两种:tr…...
【机器学习300问】28、什么是决策树?
〇、两个预测任务 (1)任务一:银行预测偿还能力 当前,某银行正致力于发掘潜在的放贷用户。他们掌握了每位用户的三个关键特征:房产状况、婚姻状况以及年收入。此外,银行还拥有过往这些用户的债务偿还能力的…...
嵌入式学习33-网络通信
网络: 数据传输,数据共享 1.网络协议模型: OSI协议模型 7 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式&…...
FFmepg--内存IO模式
功能: 内存IO模式:avio_alloc_context(): 自定义读写文件方式,打开文件 api // 自定义IO AVIOContext * avio_alloc_context (unsigend char * buffer;int buffer_size;void *opaque;int (*read_packet)(void * opaque, uint8_t * buf,in…...
Android AMS
Android进阶:一口气读完《Android进阶解密》 - 掘金 Android AMS(Activity Manager Service)实现的功能 **管理应用程序的生命周期:**启动、停止、暂停、恢复和销毁应用程序。 **控制应用程序的启动顺序:**确保应用程…...
2024暑期实习八股笔记
文章目录 自我介绍MySQL索引索引种类、B树聚簇索引、非聚簇索引联合索引、最左前缀匹配原则索引下推索引失效索引优化 日志、缓冲池redo log(重做日志)刷盘时机日志文件组 bin log(归档日志)记录格式写入机制 两阶段提交undo log&…...
EDGE 音乐生成的可编辑舞蹈 论文学习笔记
本文不是很严谨,供学习参考,随时更新 EDGE: Editable Dance Generation From Music 音乐生成的可编辑舞蹈 GitHub - Stanford-TML/EDGE: Official PyTorch Implementation of EDGE (CVPR 2023) 1. 我们引入了一种基于扩散的舞蹈生成方法,该…...
laravel 模型多对多,应用
laravel 模型多对多,应用,试卷 跟 区域 多对多关系 一个试卷可以发放到a b c 区域 创建试卷表 CREATE TABLE exams (exam_id int(11) unsigned NOT NULL AUTO_INCREMENT,exam_title varchar(100) NOT NULL DEFAULT COMMENT 标题,created_time int(11…...
嵌入式学习35-网络通信UDP聊天及TCP
题目:基于UDP实现直播间聊天的功能 需求: 软件划分为用户客户端和主播服务端两个软件client.c和server.c 用户客户端负责: 1.接收用户的昵称 2.接收用户输入的信息,能够将信息发送给服务端 3.接收服…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
