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.接收服…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
