当前位置: 首页 > news >正文

C#+VisionMaster联合开发(五)_全局相机

1、获取相机列表

ModuleInfoList moduleInfoList = VmSolutionMain.GetAllModuleList();
if (moduleInfoList.nNum > 0)
{List<string> cameraModuleNames = moduleInfoList.astModuleInfo.Where(a => !string.IsNullOrEmpty(a.strDisplayName) && "GlobalCameraModule".Equals(a.strModuleName)).Select(a => a.strDisplayName).ToList();cmbCameraName.DataSource = cameraModuleNames;cmbCameraName.SelectedIndex = cameraModuleNames.Count > 0 ? 0 : -1;
}// 获取相机对象
//GlobalCameraModuleTool cameraModuleTool = (GlobalCameraModuleTool)VmSolutionMain["相机名"];  // 方式一
//if(VmSolutionMain["相机名"] is GlobalCameraModuleTool cameraModuleTool){ } else{  // 提示未找到相机'相机名'} // 方式二

2、获取相机参数

  GlobalCameraModuleTool对象中的参数目前只能获取,修改后保存不了。

(1)方式一(不推荐)

  只有当相机拍过照后获取才是正常的,不然代码报错。海康的问题。

//bool bIsCameraConnect = moduleTool.bIsCameraConnect();          // 连接状态
//GlobalCameraParam globalCameraParam = moduleTool.ModuParams;    // 相机参数
//string cameraSN = globalCameraParam.GetChosenCameraSN();        // 相机SN
//var cameraInfoList = globalCameraParam.GetCameraInfoList();
//string cameraModel = cameraInfoList.nNum > 0 ? cameraInfoList.astCameraInfo[0].strCameraName : string.Empty;  // 相机型号
//string cameraMold = globalCameraParam.CameraMold.ToString();    // 相机类型
//string gammaEnable = globalCameraParam.GammaEnable.ToString();      // 伽马使能
//GammaSelectorEnum gammaSelector = globalCameraParam.GammaSelector;  // 伽马选择器
//double exposureTime = globalCameraParam.ExposureTime;               // 曝光时间
//double gain = globalCameraParam.Gain;                               // 增益
//string gama = string.Empty;
//cameraModuleTool.ModuParams.GetParamValue("Gamma", ref gama);       // 伽马
//gama = gama.Split('$')[0];
//int width = globalCameraParam.Width;                   // 图像宽度
//int height = globalCameraParam.Height;                 // 图像高度
//int triggerSource = globalCameraParam.TriggerSource;   // 触发源
//double triggerDelay = globalCameraParam.TriggerDelay;  // 延迟触发
 (2)方式二(目前推荐用)
if (VmSolutionMain[cameraName] is GlobalCameraModuleTool cameraModuleTool)
{
#region 获取参数 cameraModuleTool
bool bIsCameraConnect = cameraModuleTool.bIsCameraConnect();        // 连接状态
GlobalCameraParam globalCameraParam = cameraModuleTool.ModuParams;  // 相机参数
string cameraSN = globalCameraParam.GetChosenCameraSN();                                                      // 相机SN
var cameraInfoList = globalCameraParam.GetCameraInfoList();
string cameraModel = cameraInfoList.nNum > 0 ? cameraInfoList.astCameraInfo[0].strCameraName : string.Empty;  // 相机型号string cameraMold = globalCameraParam.CameraMold.ToString();  // 相机类型;CommonCamera普通相机、SmartCamera智能相机、DalsaCamera线阵相机 
string gammaEnable = globalCameraParam.GammaEnable.ToString();   // 伽马使能;true、false// 伽马选择器(兼容相机未拍照的情况)
string gammaSelector = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("GammaSelector", ref gammaSelector);  // 伽马选择器;USER、SRGB
gammaSelector = gammaSelector.Split('$')[0];// 曝光时间(兼容相机未拍照的情况)
string exposureTime = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("ExposureTime", ref exposureTime);
exposureTime = exposureTime.Split('$')[0];
// 增益(兼容相机未拍照的情况)
string gain = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("Gain", ref gain);     // 增益
gain = gain.Split('$')[0];
// 伽马(兼容相机未拍照的情况)
string gama = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("Gamma", ref gama);    // 伽马
gama = gama.Split('$')[0];// 像素格式(兼容相机未拍照的情况)
string pixelFormat = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("PixelFormat", ref pixelFormat);    // 像素格式
pixelFormat = pixelFormat.Split('$')[0];// 触发源(兼容相机未拍照的情况)
string triggerSource = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("TriggerSource", ref triggerSource);  // 触发源
triggerSource = triggerSource.Split('$')[0];// 延迟触发(兼容相机未拍照的情况)
string triggerDelay = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("TriggerDelay", ref triggerDelay);  // 延迟触发
triggerDelay = triggerDelay.Split('$')[0];// 图像宽度(兼容相机未拍照的情况)
string width = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("Width", ref width);    // 图像宽度
width = width.Split('$')[0];// 图像高度(兼容相机未拍照的情况)
string height = string.Empty;
cameraModuleTool.ModuParams.GetParamValue("Height", ref height);  // 图像高度
height = height.Split('$')[0];
#endregion 获取参数StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine($"‘获取相机信息’执行完成!相机信息如下:");
stringBuilder.AppendLine($"  连接状态={bIsCameraConnect},");
stringBuilder.AppendLine($"  相机SN={cameraSN},");
stringBuilder.AppendLine($"  相机型号={cameraModel},");
stringBuilder.AppendLine($"  相机类型={cameraMold},");
stringBuilder.AppendLine($"  像素格式={pixelFormat},");
stringBuilder.AppendLine($"  触发源={triggerSource},");
stringBuilder.AppendLine($"  延迟触发={triggerDelay},");
stringBuilder.AppendLine($"  图像宽度={width},");
stringBuilder.AppendLine($"  图像高度={height},");
stringBuilder.AppendLine($"  曝光时间={exposureTime},");
stringBuilder.AppendLine($"  增益={gain},");
stringBuilder.AppendLine($"  伽马使能={gammaEnable},");
stringBuilder.AppendLine($"  伽马选择器={gammaSelector},");
stringBuilder.AppendLine($"  伽马={gama}");
ShowLog(stringBuilder.ToString());
}

 3、修改相机参数

  对于我们来讲,获取修改相机参数 并不是对上面的相机对象'GlobalCameraModuleTool'进行操作。我们一般是修改流程中‘图像源’模块的参数。如下:

  image

  在里面,我们可以修改相机曝光、增益值,这些都可以用代码实现。但是修改不了伽马值,修改伽马值只能在下图中修改,并且VM没有提供修改该值的代码。

  image

http://www.jsqmd.com/news/89261/

相关文章:

  • 个人电脑本地私有知识库:访答知识库全面解析与应用指南
  • 【Java Web学习 | 第12篇】JavaScript(6)DOM - 详解
  • 2025年12月海南财税代理,海南税务合规财税,海南注册公司财税公司推荐:聚焦在地优势与合规能力 - 品牌鉴赏师
  • NCHU-OOP-题目集4~5以及课堂测验总结 - AC
  • 深入解析:Git 高频操作命令大全(分类整理 + 修正说明)
  • 14个顶级 Nano Banana Pro 提示词:创意AI图像生成示例(2025)
  • Vue3 实时音频录制与转写 Composable 技术实现
  • 2025年12月三亚财税,海口财税,海南财税公司推荐:政策适配性与服务实力测评指南 - 品牌鉴赏师
  • 北京集训日记
  • 接口最大并发量测试工具对比与最佳实践方案
  • 从 Vibe Coding 向 Vibe Engineering 已是发展必然
  • 达梦数据库--数据备份还原切换数据库
  • 机房U位100%管理不是梦!首码资产管理系统客户实测报告
  • 2025年数据库性能压测工具对比:重点测试方案与工具选型指南
  • ​从454. 四数相加 II 中学到Counter​
  • 团队作业5 —— 测试与发布
  • 贾子战略理论体系(一套兵法、两个七十二、三大定律)| Kucius Strategic Theory (One Art of War, Two Seventy-Twos, Three Core Law
  • 家政公司怎么去网上接单?不烧钱、不瞎投,也能把单接满
  • 【节点】[Adjustment-ReplaceColor节点]原理解析与实际应用
  • 最近在研究高速列车的主动悬挂系统,发现H无穷控制策略在这个领域挺有意思的。今天就来聊聊基于H无穷控制策略的横摆半车9自由度高速列车主动悬挂
  • android开发compose系列之Icon
  • 重构智慧书-第13条:先知他人别有所图的心思,再伺机行事
  • LED照明技术趋势解读与选购关键参数指南
  • 两次大作业--总结
  • 金属熔凝数值模拟这玩意儿玩起来真是上头,特别是用Fluent搞激光加工的时候。今天咱们就唠点干货,从热源跳舞到代码蹦迪,保准让你少走三年弯路
  • 哈希函数特性总结
  • 七自由度车辆动力学模型验证:基于Dugoff轮胎模型与CarSim的探索
  • 25
  • 129_尚硅谷_变量作用域
  • 探索改进蜣螂优化算法(IDBO):提升性能的多维度创新