Dahua AI Device Image Analysis
调用大华云平台大模型进行图像分析。完整的抓图→AI 分析流程!
完整功能
本技能提供端到端的大华云图像分析服务:
- - ✅ 设备抓拍 - 实时拍摄监控摄像头画面
- ✅ 本地保存 - 抓拍图片自动下载到本地
- ✅ AI 分析 - 调用大华云大型模型进行智能分析
- ✅ 零冗余配置 - 仅需 Cloud 凭证(ProductId、AK、SK)即可,无多余参数
- ✅ 图形界面支持 - Windows GUI 方式设置环境变量
配置凭证
需要设置 Cloud 凭证(ProductId、AK、SK)!
方式 1: 图形界面设置 (Windows GUI)
最适合初学者和不想用命令行的用户!
步骤 1: 打开系统设置
- 1. 按下
Win + R 键,输入 sysdm.cpl 并回车 - 或者右键点击"此电脑" → "属性" → "高级系统设置"
步骤 2: 进入环境变量设置
- 1. 在弹出的"系统属性"窗口中,切换到 "高级" 选项卡
- 点击底部的 "环境变量(N)..." 按钮
步骤 3: 创建用户环境变量
在 "当前用户的变量(U)" 区域(窗口上半部分),点击 "新建(W)...":
| 变量名 | 变量值 | 说明 |
|---|
| INLINECODE2 | 你的 AppID | 应用 ID |
| INLINECODE3 |
你的 AccessKey | 访问密钥 |
|
DAHUA_CLOUD_SK | 你的 SecretKey | 保密密钥 |
示例:
CODEBLOCK0
步骤 4: 确认并保存
- 1. 每个变量都点击 "确定" 保存
- 关闭所有窗口
- 重要: 重新打开命令行窗口才能生效
快速截图指引
如果需要更详细的图文教程,请参考以下操作要点:
- - 确保在"用户变量"区域添加,而非"系统变量"
- 变量名必须完全一致(区分大小写)
- 变量值不要有多余空格
- 添加完成后需要重启终端
方式 2: 命令行快速设置
适合熟悉命令行的用户!
Windows PowerShell (推荐 - 用户级别):
CODEBLOCK1
Linux/Mac (当前会话临时):
CODEBLOCK2
⚠️ 安全建议: 避免将凭证写入 ~/.bashrc、~/.zshrc 等启动文件进行长期存储,以防凭证泄露。建议优先使用 Windows 用户环境变量或临时的当前会话导出方式。
方式 3: 命令行临时设置
适合快速测试!
Windows PowerShell (临时):
CODEBLOCK3
注意: 仅在当前窗口有效,关闭后失效
验证环境变量是否生效
Linux/Mac:
CODEBLOCK4
Windows PowerShell:
$env:DAHUA_CLOUD_PRODUCT_ID
$env:DAHUA_CLOUD_AK
快速开始
基本使用
CODEBLOCK6
完整示例
CODEBLOCK7
Python SDK 调用
CODEBLOCK8
工作流程
CODEBLOCK9
响应格式
CODEBLOCK10
使用场景
1️ 人员检测
CODEBLOCK11
2️ 车辆识别
CODEBLOCK12
3️ 异常行为检测
CODEBLOCK13
4️ 物体识别
python device_image_analysis.py \
-d YOUR_SN \
-p "识别图中的主要物体,按重要性排序"
技术细节
API 端点
| 端点 | 路径 | 说明 |
|---|
| 认证 | INLINECODE7 | 获取 AppAccessToken |
| 抓图 |
/open-api/api-iot/device/setDeviceSnapEnhanced | 设备实时抓图 |
| AI 分析 |
/open-api/api-ai/largeModelDetect/imageAnalysis | 大模型图像分析 |
认证机制
- - SHA512 HMAC 签名 - 两种签名方式:
-
get_token_sign() - 获取 Token 签名 (access_key + timestamp + nonce)
-
business_api_sign() - 业务 API 签名 (access
key + appaccess_token + timestamp + nonce)
- - AppAccessToken 自动刷新 - 1 小时有效期,自动管理
- 依赖 Cloud 凭证 - 使用 ProductId、AccessKey、SecretKey 进行认证
代码架构
CODEBLOCK15
核心函数说明
analyze_device_camera(device_sn, prompt, channel_no=0)
完整的图像分析流程封装函数。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
| INLINECODE13 | INLINECODE14 | ✅ | 设备序列号 (SN) |
| INLINECODE15 |
str | ✅ | AI 分析问题 |
|
channel_no |
int | ❌ | 通道号 (默认:0) |
返回值: Dict[str, Any]
CODEBLOCK16
请求头结构
认证请求头 (获取 Token):
CODEBLOCK17
业务请求头 (抓图/AI分析):
CODEBLOCK18
可配置常量
| 常量名 | 默认值 | 说明 |
|---|
| INLINECODE20 | INLINECODE21 | API 基础地址 |
| INLINECODE22 |
0 | 默认通道号 |
|
TOKEN_EXPIRY_SECONDS |
3600 | Token 有效期(秒) |
|
TIMEOUT_AUTH |
60 | 认证超时(秒) |
|
TIMEOUT_SNAPSHOT |
60 | 抓图超时(秒) |
|
TIMEOUT_DOWNLOAD |
300 | 下载超时(秒) |
|
TIMEOUT_ANALYSIS |
120 | AI分析超时(秒) |
|
URL_VERIFY_RETRIES |
3 | URL 验证重试次数 |
|
URL_VERIFY_DELAY |
1 | URL 验证重试间隔(秒) |
|
SNAPSHOT_RETRY_DELAY |
2 | 抓拍重试间隔(秒) |
命令行参数
| 参数 | 简写 | 类型 | 必填 | 说明 |
|---|
| INLINECODE40 | INLINECODE41 | INLINECODE42 | ✅ | 设备序列号 (SN) |
| INLINECODE43 |
-p |
str | ✅ | AI 分析问题 |
|
--channel |
-c |
int | ❌ | 通道号 (默认:0) |
依赖要求
- - Python 3.8+
- requests>=2.31.0
安装依赖:
pip install requests
安全提示
不要将真实的 Cloud 凭证提交到 Git!
本项目包含 .gitignore 文件,会自动忽略敏感配置文件。建议:
- - 使用环境变量存储凭证
- 定期轮换密钥
- 限制应用权限范围
- Windows 用户建议使用 GUI 方式设置(更安全)
目录结构
CODEBLOCK20
核心优势
✅ 极简配置 - 仅需要 3 个必要参数 (SN, Prompt, Channel)
✅ 代码优化 - 统一的签名/请求头生成,完整类型注解
✅ 可配置 - 超时、重试等参数通过常量统一管理
✅ 跨平台支持 - Windows/Linux/Mac 完美运行
✅ GUI 友好 - Windows 图形界面设置环境变量
✅ 轻量依赖 - 仅依赖 requests 库,单文件实现
✅ 安全可靠 - 标准 API 认证,无密码泄露风险
License
MIT License
技能名称: dahua-cloud-open-device-image-analysis
详细描述:
大华AI设备图像分析
调用大华云平台大模型进行图像分析。完整的抓图→AI 分析流程!
完整功能
本技能提供端到端的大华云图像分析服务:
- - ✅ 设备抓拍 - 实时拍摄监控摄像头画面
- ✅ 本地保存 - 抓拍图片自动下载到本地
- ✅ AI 分析 - 调用大华云大型模型进行智能分析
- ✅ 零冗余配置 - 仅需 Cloud 凭证(ProductId、AK、SK)即可,无多余参数
- ✅ 图形界面支持 - Windows GUI 方式设置环境变量
配置凭证
需要设置 Cloud 凭证(ProductId、AK、SK)!
方式 1: 图形界面设置 (Windows GUI)
最适合初学者和不想用命令行的用户!
步骤 1: 打开系统设置
- 1. 按下 Win + R 键,输入 sysdm.cpl 并回车
- 或者右键点击此电脑 → 属性 → 高级系统设置
步骤 2: 进入环境变量设置
- 1. 在弹出的系统属性窗口中,切换到 高级 选项卡
- 点击底部的 环境变量(N)... 按钮
步骤 3: 创建用户环境变量
在 当前用户的变量(U) 区域(窗口上半部分),点击 新建(W)...:
| 变量名 | 变量值 | 说明 |
|---|
| DAHUACLOUDPRODUCTID | 你的 AppID | 应用 ID |
| DAHUACLOUD_AK |
你的 AccessKey | 访问密钥 |
| DAHUA
CLOUDSK | 你的 SecretKey | 保密密钥 |
示例:
变量名:DAHUACLOUDPRODUCT_ID
变量值:138XXXX731
变量名:DAHUACLOUDAK
变量值:196XXXXXXXXXXXXX808
变量名:DAHUACLOUDSK
变量值:naumXXXXXXXXXXXXXXXXyHxh
步骤 4: 确认并保存
- 1. 每个变量都点击 确定 保存
- 关闭所有窗口
- 重要: 重新打开命令行窗口才能生效
快速截图指引
如果需要更详细的图文教程,请参考以下操作要点:
- - 确保在用户变量区域添加,而非系统变量
- 变量名必须完全一致(区分大小写)
- 变量值不要有多余空格
- 添加完成后需要重启终端
方式 2: 命令行快速设置
适合熟悉命令行的用户!
Windows PowerShell (推荐 - 用户级别):
powershell
[Environment]::SetEnvironmentVariable(DAHUACLOUDPRODUCTID, yourapp_id, User)
[Environment]::SetEnvironmentVariable(DAHUACLOUDAK, youraccesskey, User)
[Environment]::SetEnvironmentVariable(DAHUACLOUDSK, yoursecretkey, User)
Linux/Mac (当前会话临时):
bash
export DAHUACLOUDPRODUCTID=yourapp_id
export DAHUACLOUDAK=youraccesskey
export DAHUACLOUDSK=yoursecretkey
⚠️ 安全建议: 避免将凭证写入 ~/.bashrc、~/.zshrc 等启动文件进行长期存储,以防凭证泄露。建议优先使用 Windows 用户环境变量或临时的当前会话导出方式。
方式 3: 命令行临时设置
适合快速测试!
Windows PowerShell (临时):
powershell
$env:DAHUACLOUDPRODUCTID=yourapp_id
$env:DAHUACLOUDAK=youraccesskey
$env:DAHUACLOUDSK=yoursecretkey
注意: 仅在当前窗口有效,关闭后失效
验证环境变量是否生效
Linux/Mac:
bash
echo $DAHUACLOUDPRODUCT_ID
echo $DAHUACLOUDAK
注意:不要打印 SK,避免泄露
Windows PowerShell:
powershell
$env:DAHUACLOUDPRODUCT_ID
$env:DAHUACLOUDAK
快速开始
基本使用
bash
python deviceimageanalysis.py \
--device-sn BA5918431 \
--prompt 请判断这张图片中是否有人
完整示例
bash
抓拍并调用 AI 分析(仅需要 Cloud 凭证)
python device
imageanalysis.py \
-d BA5918431 \
-p 请判断图片中是否有白色轿车。回答格式:有{是} 或 无{否} \
-c 0
Python SDK 调用
python
from deviceimageanalysis import analyzedevicecamera
result = analyzedevicecamera(
device_sn=BA5918431,
prompt=请判断图中是否有人玩手机,
channel_no=0
)
print(fAnalysis Result: {result[analysis][result]})
工作流程
┌─────────────┐
│ 1. 获取 Cloud Token │
│ (AppAccessToken) │
└──────┬──────┘
▼
┌─────────────┐
│ 2. 设备抓图 │
│ setDeviceSnapEnhanced │
└──────┬──────┘
▼
┌─────────────┐
│ 3. 等待 OSS │
│ URL 生效(1s) │
└──────┬──────┘
▼
┌─────────────┐
│ 4. 下载保存 │
│ 图片到本地 │
│ (支持5次重试) │
└──────┬──────┘
▼
┌─────────────┐
│ 5. 调用 AI 分析 │
│ imageAnalysis API │
└──────┬──────┘
▼
┌─────────────┐
│ 6. 返回结果 │
│ 含分析内容和本地路径 │
└─────────────┘
响应格式
python
{
success: True,
device_sn: BA5918431,
channel_no: 0,
image_url: https://oss-cn-hangzhou.aliyuncs.com/...,
localimagepath: ./capturedimages/BA5918431/ch01234567890.jpg,
analysis: {
success: True,
code: 200,
message: 操作成功,
data: {content: 图中有 2 个人},
result: 图中有 2 个人
}
}
使用场景
1️ 人员检测
bash
python device
imageanalysis.py \
-d YOUR_SN \
-p 图中是否有人?请回答有或无
2️ 车辆识别
bash
python device
imageanalysis.py \
-d YOUR_SN \
-p 图中有多少辆车?分别是什么颜色?
3️ 异常行为检测
bash
python device
imageanalysis.py \
-d YOUR_SN \
-p 图中是否有打架、摔倒等异常情况?
4️ 物体识别
bash
python device
imageanalysis.py \
-d YOUR_SN \
-p 识别图中的主要物体,按重要性排序
技术细节
API 端点
| 端点 | 路径 | 说明 |
|---|
| 认证 | /open-api/api-base/auth/getAppAccessToken | 获取 AppAccessToken |
| 抓图 |
/open-api/api-iot/device/setDeviceSnapEnhanced | 设备实时抓图 |
| AI 分析 | /open-api/api-ai/largeModelDetect/imageAnalysis | 大模型图像分析 |
认证机制
- - SHA512 HMAC 签名 - 两种签名方式:
- get
tokensign() - 获取 Token 签名 (access_key + timestamp + nonce)
- business
apisign() - 业务 API 签名 (access
key + appaccess_token + timestamp + nonce)
- - AppAccessToken 自动刷新 - 1 小时有效期,自动管理
- 依赖 Cloud 凭证 - 使用 ProductId、AccessKey、SecretKey 进行认证
代码架构
┌────────────────