计算机视觉工具函数文档
概述
本文档详细分析了邮轮穿舱件管理系统后台中的计算机视觉核心工具函数,主要涵盖lib/cvcore.py模块。该模块提供了与CVCore图像识别系统交互的完整API接口,包括图像上传、下载、列表获取、图像识别系统的增删查等核心功能。
模块结构分析
文件依赖关系
cvcore.py模块依赖于以下关键组件:
- app.core.settings:系统配置管理
- app.lib.netrequest:异步HTTP请求处理
- pydantic:数据模型验证
- venv.logger:日志记录
类图结构
classDiagram
class ImageInSchema {
+pic_name: str
+product_id: str
+oss_name: str
+model_dump() Dict
}
class CVCoreClient {
+list_cvcore_image(target: str) Dict
+upload_image_to_cvcore(image: bytes) Dict
+get_image_from_cvcore(key: str) bytes
+sdk_add_image(image: ImageInSchema) Dict
+sdk_delete_image(product_id: str, pic_name: str) Dict
+sdk_search_image(key: str) Dict
}
ImageInSchema <|-- CVCoreClient : uses
核心功能详解
1. 数据模型定义
ImageInSchema 类
- 功能:定义图像识别系统输入数据模型
- 字段:
pic_name:图像名称product_id:产品IDoss_name:OSS存储名称
参考源文件:
2. 图像管理功能
2.1 获取图像列表
async def list_cvcore_image(target:str = "cdcwarp")
功能描述:
- 从CVCore系统获取指定目标的图像列表
- 返回包含图像元数据的JSON响应
请求流程:
sequenceDiagram
participant Client
participant CVCore
participant OSS
Client->>CVCore: GET /oss/list?target=cdcwarp
CVCore->>OSS: 查询图像列表
OSS-->>CVCore: 返回图像元数据
CVCore-->>Client: JSON响应
响应数据结构:
{
"code": 0,
"msg": "success",
"data": [
{
"key": "system-image/03c857bb.jpg",
"last_modified": 1756112758,
"etag": "ABB6326A62AFDD96FAA7ECD87F09A366",
"type": "Normal",
"size": 166971,
"storage_class": "Standard",
"owner": {
"display_name": "1114749188001716",
"id": "1114749188001716"
},
"restore_info": null
}
]
}
参考源文件:
2.2 图像上传功能
async def upload_image_to_cvcore(image:bytes) -> Dict
功能描述:
- 将图像字节数据上传到CVCore系统
- 使用multipart/form-data格式上传
- 自动处理Content-Type头部
技术实现:
- 使用HTTP POST请求
- 自动生成multipart表单数据
- 支持图像格式自动识别
参考源文件:
2.3 图像下载功能
async def get_image_from_cvcore(key:str) -> bytes
功能描述:
- 根据图像key从CVCore系统下载图像
- 返回Base64编码的图像数据
参考源文件:
3. 图像识别系统集成
3.1 添加图像到识别系统
async def sdk_add_image(image:ImageInSchema)
功能描述:
- 将图像注册到图像识别系统中
- 需要提供完整的图像元数据
请求示例:
{
"pic_name": "example",
"product_id": "12345",
"oss_name": "system-image/example.jpg"
}
参考源文件:
3.2 从识别系统删除图像
async def sdk_delete_image(product_id:str, pic_name:str)
功能描述:
- 根据产品ID和图像名称从识别系统中删除图像
- 忽略oss_name字段
参考源文件:
3.3 图像搜索功能
async def sdk_search_image(key:str)
功能描述:
- 在图像识别系统中搜索图像
- 使用OSS名称作为搜索关键词
- 忽略pic_name和product_id字段
参考源文件:
系统架构图
flowchart TD
subgraph "邮轮穿舱件管理系统"
A[Web应用层]
B[业务逻辑层]
C[数据访问层]
end
subgraph "CVCore图像识别系统"
D[API网关]
E[图像处理服务]
F[识别引擎]
G[OSS存储]
end
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
G --> E
style A fill:#e1f5fe
style D fill:#f3e5f5
style G fill:#e8f5e8
数据流程图
flowchart LR
A[用户上传图像] --> B[图像字节数据]
B --> C[上传到CVCore]
C --> D[存储到OSS]
D --> E[注册到识别系统]
E --> F[生成识别特征]
F --> G[可用于搜索]
H[用户搜索图像] --> I[发送搜索请求]
I --> J[识别系统匹配]
J --> K[返回相似图像]
错误处理机制
异常处理策略
- 使用
response.raise_for_status()自动处理HTTP错误 - 统一的JSON响应格式
- 详细的日志记录
日志记录
- 记录所有API调用URL
- 跟踪图像操作过程
- 便于故障排查
性能优化建议
1. 连接池管理
- 使用异步HTTP客户端保持连接复用
- 配置合理的连接超时时间
2. 图像处理优化
- 支持图像压缩上传
- 分批处理大量图像
3. 缓存策略
- 实现图像元数据缓存
- 减少重复API调用
使用示例
完整工作流程
# 1. 上传图像
image_data = await read_image_file("example.jpg")
upload_result = await upload_image_to_cvcore(image_data)
# 2. 注册到识别系统
image_schema = ImageInSchema(
pic_name="example",
product_id="12345",
oss_name=upload_result["file_key"]
)
await sdk_add_image(image_schema)
# 3. 搜索图像
search_result = await sdk_search_image(upload_result["file_key"])
索引
cvcore.py模块提供了完整的计算机视觉功能集成,具备以下特点:
- 功能全面:覆盖图像上传、下载、识别系统集成等核心功能
- 异步设计:基于异步IO,支持高并发场景
- 标准化接口:统一的错误处理和响应格式
- 易于扩展:模块化设计便于功能扩展
该模块为邮轮穿舱件管理系统提供了强大的图像识别能力支撑,是系统智能化的关键技术组件。
主要参考文件: