# XCamera LED灯识别库 基于.NET Framework 4.0的摄像头LED灯识别库,使用XCloudSDK实现摄像头连接和图像捕获功能。 ## 功能特性 1. **初始化** - 初始化SDK和库 2. **设置配置文件路径** - 加载JSON配置文件 3. **启动摄像头** - 根据配置连接摄像头 4. **循环捕获图像** - 定时从摄像头捕获图像 5. **LED灯识别** - 识别LED灯的颜色、亮灭状态、是否闪烁 6. **状态查询** - 提供函数查询LED灯状态 7. **区域设置窗口** - 可视化设置LED区域 8. **资源释放** - 关闭卸载并释放资源 ## 摄像头配置 - **IP地址**: 通过配置接口设置(默认192.168.100.10) - **TCP端口**: 34567(固定) - **HTTP端口**: 8888(固定) - **ONVIF端口**: 8899(固定) ## 快速开始 ### 1. 初始化 ```csharp // 使用默认配置初始化 bool result = XCamera.Initialize(); // 或指定配置文件路径 bool result = XCamera.Initialize("config.json"); ``` ### 2. 设置配置文件 ```csharp bool result = XCamera.SetConfigFile("config.json"); ``` ### 3. 启动摄像头 ```csharp bool result = XCamera.StartCamera(); ``` ### 4. 开始捕获图像 ```csharp // 默认间隔1秒 bool result = XCamera.StartCapture(); // 或指定捕获间隔(毫秒) bool result = XCamera.StartCapture(2000); // 2秒间隔 ``` ### 5. 订阅LED状态更新事件 ```csharp XCamera.LedStatusUpdated += (sender, statuses) => { foreach (var status in statuses) { Console.WriteLine($"{status.RegionName}: {status.DetectedColor} {status.State}"); } }; ``` ### 6. 手动检测LED状态 ```csharp var statuses = XCamera.DetectLeds(); foreach (var status in statuses) { Console.WriteLine(status.GetStatusDescription()); } ``` ### 7. 显示区域编辑器 ```csharp XCamera.ShowRegionEditor(); ``` ### 8. 关闭资源 ```csharp XCamera.Shutdown(); ``` ## 配置文件格式 ```json { "IpAddress": "192.168.100.10", "TcpPort": 34567, "HttpPort": 8888, "OnvifPort": 8899, "Username": "admin", "Password": "", "Channel": 1, "LedRegions": [ { "Id": "power_led", "Name": "电源指示灯", "X": 100, "Y": 50, "Width": 20, "Height": 20, "ExpectedColor": "Red", "ColorTolerance": 30, "MinBrightness": 100 } ] } ``` ## 核心类说明 ### XCamera(主类) 提供静态方法,简化库的使用。包含所有主要功能的封装。 ### XCameraManager(管理器) 核心管理器,负责协调各个组件的工作。 ### ConfigurationManager(配置管理器) 管理JSON配置文件的加载、保存和更新。 ### CameraConnectionManager(摄像头连接管理器) 负责摄像头的连接、登录、实时预览和图像捕获。 ### ImageProcessor(图像处理器) 提供图像处理功能,包括颜色分析、亮度计算等。 ### LedDetector(LED检测器) 负责LED灯的状态检测,包括颜色识别、亮度检测、闪烁检测。 ### RegionEditorForm(区域编辑器) 可视化界面,用于设置和调整LED区域。 ## 事件 - **LedStatusUpdated**: LED状态更新事件 - **ConnectionStateChanged**: 连接状态变更事件 - **CaptureStateChanged**: 捕获状态变更事件 - **ErrorOccurred**: 错误事件 ## 使用示例 ```csharp using System; using XCamera; class Program { static void Main() { // 初始化 if (!XCamera.Initialize("config.json")) { Console.WriteLine("初始化失败"); return; } // 订阅LED状态更新 XCamera.LedStatusUpdated += (sender, statuses) => { Console.WriteLine("LED状态更新:"); foreach (var status in statuses) { Console.WriteLine($" {status.GetStatusDescription()}"); } }; // 启动摄像头 if (XCamera.StartCamera()) { Console.WriteLine("摄像头启动成功"); // 开始捕获图像 if (XCamera.StartCapture(1000)) { Console.WriteLine("开始捕获图像..."); // 等待用户输入 Console.WriteLine("按任意键停止..."); Console.ReadKey(); // 停止捕获 XCamera.StopCapture(); } // 停止摄像头 XCamera.StopCamera(); } // 关闭资源 XCamera.Shutdown(); } } ``` ## 编译说明 1. 确保已安装.NET Framework 4.0或更高版本 2. 项目依赖Newtonsoft.Json 8.0.3 3. 需要XCloudSDK.dll文件(已包含在lib目录中) 4. 使用Visual Studio或MSBuild编译 ## 注意事项 1. 确保摄像头IP地址正确配置 2. 检查网络连接是否正常 3. 确保有足够的权限访问摄像头 4. 配置文件中的LED区域坐标需要根据实际图像调整 5. 建议在实际使用前进行充分的测试和校准 ## 错误处理 库中所有方法都有完善的错误处理机制,失败时会返回false,并通过ErrorOccurred事件提供详细的错误信息。 ## 技术支持 如有问题,请参考示例配置文件和测试程序进行调试。