Claw 项目完整结构提交
This commit is contained in:
216
Windows/CS/Framework4.0/XCamera/README.md
Normal file
216
Windows/CS/Framework4.0/XCamera/README.md
Normal 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(图像处理器)
|
||||
提供图像处理功能,包括颜色分析、亮度计算等。
|
||||
|
||||
### 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事件提供详细的错误信息。
|
||||
|
||||
## 技术支持
|
||||
|
||||
如有问题,请参考示例配置文件和测试程序进行调试。
|
||||
Reference in New Issue
Block a user