| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using PropertyGridLib.Attributes;
- using PropertyGridLib.Controls;
- using System;
- using System.ComponentModel;
- using TeamAAS.Camera.Enums;
- using TeamAAS.Camera.Images;
- using TeamAAS.FlowEngine.FormulaData;
- using Plugins.Standard.Core;
- namespace Plugins.Standard.Models
- {
- /// <summary>
- /// 图像采集来源。
- /// </summary>
- [Serializable]
- public enum AcqImageSource
- {
- /// <summary>从已注册的相机设备采集</summary>
- [Description("相机采集")]
- 相机采集 = 0,
- /// <summary>加载指定的本地图像文件</summary>
- [Description("本地图像")]
- 本地图像 = 1,
- /// <summary>从本地目录按顺序(可循环)读取图像</summary>
- [Description("本地目录")]
- 本地目录 = 2,
- }
- [System.Serializable]
- public class ImageAcqModel : TeamAAS.FlowEditor.Plugins.BasePluginModel
- {
- [DisplayName("图像来源")]
- [Description("选择图像来源:相机采集 / 本地图像 / 本地目录")]
- [Category("图像来源")]
- public AcqImageSource Source { get; set; } = AcqImageSource.相机采集;
- [DisplayName("相机设备")]
- [Description("选择已注册的相机设备")]
- [Category("相机设置")]
- [TypeConverter(typeof(CameraDeviceConverter))]
- public string CameraName { get; set; }
- [DisplayName("曝光时间(us)")]
- [Description("设置相机曝光时间,单位微秒")]
- [Category("相机设置")]
- [FormulaEditor(typeof(PluginDataProvider))]
- public FormulaBound<float> ExposureTime { get; set; } = new FormulaBound<float>(10000);
- [DisplayName("增益(dB)")]
- [Description("设置相机增益,单位分贝")]
- [Category("相机设置")]
- [FormulaEditor(typeof(PluginDataProvider))]
- public FormulaBound<float> Gain { get; set; } = new FormulaBound<float>(0);
- [DisplayName("Gamma")]
- [Description("设置Gamma校正值,1.0为无校正,>1.0提亮暗部,<1.0压暗暗部")]
- [Category("图像处理")]
- [FormulaEditor(typeof(PluginDataProvider))]
- public FormulaBound<float> Gamma { get; set; } = new FormulaBound<float>(1.0f);
- [DisplayName("自动打开设备")]
- [Description("采集前自动打开相机设备")]
- [Category("采集选项")]
- public bool AutoOpen { get; set; } = true;
- [DisplayName("触发模式")]
- [Description("跟随相机=不下发触发设置,沿用相机自身配置(默认,兼容既有流程);连续采集=自由运行;软触发=每次取相发一条软件命令;硬触发=等外部信号(通用 Line0,Basler 为 Line1)。可选项随所选相机能力动态变化,不支持的模式会被拒绝")]
- [Category("相机设置")]
- public CameraTriggerMode TriggerMode { get; set; } = CameraTriggerMode.跟随相机;
- [DisplayName("本地图像文件")]
- [Description("图像来源为「本地图像」时加载的文件完整路径")]
- [Category("本地图像")]
- public string LocalImagePath { get; set; } = "";
- [DisplayName("本地图像目录")]
- [Description("图像来源为「本地目录」时读取的文件夹路径")]
- [Category("本地目录")]
- public string LocalImageDir { get; set; } = "";
- [DisplayName("循环读取")]
- [Description("本地目录读取到末尾后自动回到第一张,循环取图")]
- [Category("本地目录")]
- public bool CyclicRead { get; set; } = true;
- [DisplayName("应用Gamma到本地图")]
- [Description("对本地加载的图像做软件 Gamma 校正(相机采集由相机硬件处理,不受此选项影响)")]
- [Category("图像处理")]
- public bool ApplyGamma { get; set; } = true;
- /// <summary>
- /// 最近一次采集/加载得到的图像,仅供自定义视图预览显示。
- /// 运行态数据,不参与流程文件序列化(BinaryFormatter 会跳过 [NonSerialized] 字段)。
- /// </summary>
- [Browsable(false)]
- [NonSerialized]
- private GenImage _previewImage;
- [Browsable(false)]
- [Newtonsoft.Json.JsonIgnore]
- public GenImage PreviewImage
- {
- get => _previewImage;
- set => _previewImage = value;
- }
- /// <summary>
- /// 本地目录循环读取的游标(运行态,不序列化)。
- /// </summary>
- [Browsable(false)]
- [NonSerialized]
- private int _dirCursor;
- [Browsable(false)]
- [Newtonsoft.Json.JsonIgnore]
- public int DirCursor
- {
- get => _dirCursor;
- set => _dirCursor = value;
- }
- }
- }
|