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

216 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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事件提供详细的错误信息。
## 技术支持
如有问题,请参考示例配置文件和测试程序进行调试。