5.2 KiB
5.2 KiB
XCamera LED灯识别库
基于.NET Framework 4.0的摄像头LED灯识别库,使用XCloudSDK实现摄像头连接和图像捕获功能。
功能特性
- 初始化 - 初始化SDK和库
- 设置配置文件路径 - 加载JSON配置文件
- 启动摄像头 - 根据配置连接摄像头
- 循环捕获图像 - 定时从摄像头捕获图像
- LED灯识别 - 识别LED灯的颜色、亮灭状态、是否闪烁
- 状态查询 - 提供函数查询LED灯状态
- 区域设置窗口 - 可视化设置LED区域
- 资源释放 - 关闭卸载并释放资源
摄像头配置
- 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(图像处理器)
提供图像处理功能,包括颜色分析、亮度计算等。
LedDetector(LED检测器)
负责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();
}
}
编译说明
- 确保已安装.NET Framework 4.0或更高版本
- 项目依赖Newtonsoft.Json 8.0.3
- 需要XCloudSDK.dll文件(已包含在lib目录中)
- 使用Visual Studio或MSBuild编译
注意事项
- 确保摄像头IP地址正确配置
- 检查网络连接是否正常
- 确保有足够的权限访问摄像头
- 配置文件中的LED区域坐标需要根据实际图像调整
- 建议在实际使用前进行充分的测试和校准
错误处理
库中所有方法都有完善的错误处理机制,失败时会返回false,并通过ErrorOccurred事件提供详细的错误信息。
技术支持
如有问题,请参考示例配置文件和测试程序进行调试。