Files
JoyD/Windows/CS/Framework4.0/XCamera
2026-03-16 15:55:20 +08:00
..
2026-03-16 15:47:55 +08:00
2026-03-16 15:47:55 +08:00
2026-03-16 15:47:55 +08:00
2026-03-16 15:47:55 +08:00
2026-03-16 15:55:20 +08:00
2026-03-16 15:47:55 +08:00

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. 初始化

// 使用默认配置初始化
bool result = XCamera.Initialize();

// 或指定配置文件路径
bool result = XCamera.Initialize("config.json");

2. 设置配置文件

bool result = XCamera.SetConfigFile("config.json");

3. 启动摄像头

bool result = XCamera.StartCamera();

4. 开始捕获图像

// 默认间隔1秒
bool result = XCamera.StartCapture();

// 或指定捕获间隔(毫秒)
bool result = XCamera.StartCapture(2000); // 2秒间隔

5. 订阅LED状态更新事件

XCamera.LedStatusUpdated += (sender, statuses) =>
{
    foreach (var status in statuses)
    {
        Console.WriteLine($"{status.RegionName}: {status.DetectedColor} {status.State}");
    }
};

6. 手动检测LED状态

var statuses = XCamera.DetectLeds();
foreach (var status in statuses)
{
    Console.WriteLine(status.GetStatusDescription());
}

7. 显示区域编辑器

XCamera.ShowRegionEditor();

8. 关闭资源

XCamera.Shutdown();

配置文件格式

{
  "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图像处理器

提供图像处理功能,包括颜色分析、亮度计算等。

LedDetectorLED检测器

负责LED灯的状态检测包括颜色识别、亮度检测、闪烁检测。

RegionEditorForm区域编辑器

可视化界面用于设置和调整LED区域。

事件

  • LedStatusUpdated: LED状态更新事件
  • ConnectionStateChanged: 连接状态变更事件
  • CaptureStateChanged: 捕获状态变更事件
  • ErrorOccurred: 错误事件

使用示例

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事件提供详细的错误信息。

技术支持

如有问题,请参考示例配置文件和测试程序进行调试。