Claw 项目完整结构提交

This commit is contained in:
zqm
2026-03-16 15:47:55 +08:00
parent ca4970bcbf
commit fb0aeb6ca2
118 changed files with 28648 additions and 281 deletions

View File

@@ -0,0 +1,216 @@
# 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图像处理器
提供图像处理功能,包括颜色分析、亮度计算等。
### LedDetectorLED检测器
负责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事件提供详细的错误信息。
## 技术支持
如有问题,请参考示例配置文件和测试程序进行调试。