【VM服务管家】VM4.2平台SDK_6.5 全局类

news/2024/7/21 7:36:46 标签: 计算机视觉, 人工智能, 图像处理

目录

  • 2.5.1 全局相机:获取全局相机列表和设置相机参数的方法

2.5.1 全局相机:获取全局相机列表和设置相机参数的方法

描述
环境:VM4.2 + VS2013及以上
问题:问题1:如何获取方案中所有的全局相机的连接状态,如下图所示:
在这里插入图片描述

如何在流程运行时监控全局相机1和全局相机2的连接状态?
问题2:如何设置全局相机的基本参数,例如设置全局相机1的曝光和增益?
解答
问题1的解答:
在4.2.1中,VM SDK增加了获取相机连接状态的API,在GlobalCameraTool类中,方法bIsCameraConnect( )可以获取相机的连接状态。如果要监控方案中所有全局相机模块的连接状态可以参考下面的代码:
在程序初始化时,启动监控线程,如下:

C#
//获取流程中所有全局相机模块
List<GlobalCameraModuleTool> glCameralist = new List<GlobalCameraModuleTool>();
List<VmModule> vmModules = new List<VmModule>();
VmSolution.Instance.GetAllModule(vmModules);
foreach(VmModule module in vmModules)
{
    if(module.GetType()==typeof(GlobalCameraModuleTool))
    {
        glCameralist.Add((GlobalCameraModuleTool) module);
    }
}
//启动全局相机连接状态监控线程
Thread watchThread = new Thread(new ParameterizedThreadStart(CameraConnectionWatchDog));
watchThread.IsBackground = true;
watchThread.Start(glCameralist);

监控相机连接状态的线程函数,如下:

C#
public void CameraConnectionWatchDog(object obj)
{
    List<GlobalCameraModuleTool> globalCameraToolList = (List<GlobalCameraModuleTool>)obj;
    bool[] isCameraConected = new bool[globalCameraToolList.Count];
    while (true)
    {
        try
        {
            //获取流程中所有已配置的连接状态
            foreach (var cameraTool in globalCameraToolList)
            {
 
                if (cameraTool.bIsCameraConnect() == false)
                {
                    Debug.WriteLine(string.Format($"警告: {cameraTool.Name} 已经离线!"));
                }
            }
        }
        catch (VmException ex)
        {
            Debug.WriteLine("发生致命错误,错误码:" + ex.errorCode);
        }
        Thread.Sleep(2000);
    }
}

问题2的解答:
全局相机参数设置,通过调用GlobalCameraParam这个类的方法和属性就可以做到。
例如设置全局相机1的曝光和增益,代码如下:

GlobalCameraModuleTool cameraModuleTool = VmSolution.Instance["全局相机1"] as GlobalCameraModuleTool;
GlobalCameraParam globalCameraParam = cameraModuleTool.ModuParams;
globalCameraParam.ExposureTime = 5000;
globalCameraParam.Gain = 5.0;

需要注意的地方:全局相机模块在VM SDK中使用,如果没有使用添加引用的工具,可以手动添加GlobalCameraModuleCs.dll 引用,并将引用属性的“复制到本地”选项设置为False, 然后在程序代码文件中,添加命名空间的引用:using GlobalCameraModuleCs;
问题根因
不了解VM SDK中全局相机模块的使用
不知道如何访问全局相机模块的方法和属性


http://www.niftyadmin.cn/n/285224.html

相关文章

代码随想录算法训练营第五十天| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

文章目录 123.买卖股票的最佳时机III188.买卖股票的最佳时机IV:star: 123.买卖股票的最佳时机III 至多买卖两次 分清楚动态规划所有状态至关重要&#xff0c;这是求dp数组的前提 和之前买卖股票问题解题思路相似&#xff0c;只是多增加了第二天的状态 总结&#xff1a;买卖股票…

【Linux】管道

目录 一、前言 二、管道 1、匿名管道 1.1、基本原理 1.2、代码实现 1.3、管道的特点 1.4、基于管道的简单设计 2、命名管道 2.1、匿名管道与命名管道的区别 2.2、代码实现命名管道通信 一、前言 为了满足各种需求&#xff0c;进程之间是需要通信的。进程间通信的主要目…

【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心

移动石子直到连续【LC1033】 三枚石子放置在数轴上&#xff0c;位置分别为 a&#xff0c;b&#xff0c;c。 每一回合&#xff0c;你可以从两端之一拿起一枚石子&#xff08;位置最大或最小&#xff09;&#xff0c;并将其放入两端之间的任一空闲位置。形式上&#xff0c;假设这…

TypeScript 基础

类型注解 类型注解&#xff1a;约束变量的类型 示例代码: let age&#xff1a;number 18 说明&#xff1a;代码中的 :number 就是类型注解 解释&#xff1a;约定了类型&#xff0c;就只能给变量赋值该类型的值&#xff0c;否则&#xff0c;就会报错 错误演示&#xff1a;…

linux驱动开发 - 11_Linux 下的驱动分离与分层

文章目录 11. Linux 下的驱动分离与分层1 驱动的分隔与分离2 驱动的分层 11. Linux 下的驱动分离与分层 1 驱动的分隔与分离 linux是一个成熟、复杂、庞大的操作系统&#xff0c;代码的重用性很重要&#xff0c;不然会在linux内核存在大量的无意义重复的代码。尤其的驱动程序…

基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集模块设计(二)研究 JESD204B 链路建立与同步的过程

基于 JESD204B 的采集与数据接收电路设计 本章将围绕基于 JESD204B 高速数据传输接口的双通道高速数据采集实现展 开。首先&#xff0c;简介 JESD204B 协议、接口结构。然后&#xff0c;研究 JESD204B 链路建立与同 步的过程。其次&#xff0c;研究基于 JESD204B …

【VM服务管家】专题_7.3 图像转换

目录 3.1 图像转换扫盲篇&#xff08;CSharp&#xff09;3.2 相机采图转流程输入、Group输入、图像源SDK输入、模块输入、算子输入图像3.3 Bitmap转流程输入、Group输入、图像源SDK输入、模块输入、算子输入、算子输出、流程输出图像3.4 Mat转流程输入、Group输入、图像源SDK输…

JavaSE基础(二)—— 类型转换、运算符、键盘录入

目录 一、类型转换 1. 自动类型转换 1.1 自动类型转换的底层原理&#xff1a; ​1.2 自动类型转换的其他形式​编辑 2. 表达式的自动类型转换 3. 强制类型转换 3.1 强制类型转换底层原理​编辑 3.2 注意事项 二、运算符 1. 算数运算符 1.1 案例&#xff1a;数值拆分…