2025-10-21 11:07:29 +08:00
|
|
|
|
# RKNN 关键点推理与偏移量计算工具
|
|
|
|
|
|
|
|
|
|
|
|
该工具通过使用RKNN模型对输入图像进行关键点检测,并根据检测结果计算相对于固定参考点的偏移量(单位:毫米)。此外,还提供了可视化选项来展示计算结果。
|
|
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
|
|
|
|
|
|
|
├── calculate_offset.py # 主程序脚本
|
|
|
|
|
|
├── point.rknn # RKNN 模型文件 (请确保正确路径)
|
|
|
|
|
|
└── README.md # 说明文档
|
|
|
|
|
|
|
|
|
|
|
|
## 配置
|
|
|
|
|
|
|
|
|
|
|
|
在 `calculate_offset.py` 文件顶部的配置区中,您可以修改如下参数以适应您的需求:
|
|
|
|
|
|
|
|
|
|
|
|
- **MODEL_PATH**: RKNN 模型文件路径。
|
|
|
|
|
|
- **OUTPUT_DIR**: 输出目录路径。
|
|
|
|
|
|
- **FIXED_REF_POINT**: 固定参考点坐标(像素)。
|
|
|
|
|
|
- **SCALE_X**, **SCALE_Y**: 缩放因子,用于将像素坐标转换为毫米。
|
|
|
|
|
|
- **IMG_SIZE**: 输入图像尺寸。
|
|
|
|
|
|
|
|
|
|
|
|
## 安装依赖
|
|
|
|
|
|
|
|
|
|
|
|
请确保安装了必要的 Python 库。可以通过 pip 安装:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
pip install opencv-python numpy rknnlite
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-10-22 17:52:29 +08:00
|
|
|
|
## 函数调用1.0
|
2025-10-21 11:07:29 +08:00
|
|
|
|
|
|
|
|
|
|
您也可以直接调用 calculate_offset_from_image 函数,以便集成到其他项目中:
|
|
|
|
|
|
示例 1: 仅获取偏移量(不画图)
|
2025-10-22 17:52:29 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-10-21 11:07:29 +08:00
|
|
|
|
from calculate_offset import calculate_offset_from_image
|
|
|
|
|
|
result = calculate_offset_from_image("your_image_path.jpg", visualize=False)
|
|
|
|
|
|
if result['success']:
|
|
|
|
|
|
print(f"Offset: DeltaX={result['dx_mm']:+.2f} mm, DeltaY={result['dy_mm']:+.2f} mm")
|
|
|
|
|
|
else:
|
|
|
|
|
|
print("Error:", result['message'])
|
2025-10-22 17:52:29 +08:00
|
|
|
|
```
|
2025-10-21 11:07:29 +08:00
|
|
|
|
示例 2: 获取偏移量并保存可视化图
|
2025-10-22 17:52:29 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-10-21 11:07:29 +08:00
|
|
|
|
from calculate_offset import calculate_offset_from_image
|
|
|
|
|
|
result = calculate_offset_from_image("your_image_path.jpg", visualize=True)
|
2025-10-22 17:52:29 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 函数调用2.0
|
|
|
|
|
|
|
|
|
|
|
|
示例 1: 仅获取偏移量(不画图)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
from caculate_diff2.0 import calculate_offset_from_image
|
|
|
|
|
|
|
|
|
|
|
|
result = calculate_offset_from_image("11.jpg", visualize=False)
|
|
|
|
|
|
if result['success']:
|
|
|
|
|
|
print(f"Offset: DeltaX={result['dx_mm']:+.2f} mm, DeltaY={result['dy_mm']:+.2f} mm")
|
|
|
|
|
|
else:
|
|
|
|
|
|
print("Error:", result['message'])
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
示例 2: 获取偏移量并保存可视化图
|
2025-10-21 11:07:29 +08:00
|
|
|
|
|
2025-10-22 17:52:29 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
from caculate_diff2.0 import calculate_offset_from_image
|
|
|
|
|
|
|
|
|
|
|
|
result = calculate_offset_from_image("11.jpg", visualize=True)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
##该函数返回一个包含下列字段的字典1.0:
|
2025-10-21 11:07:29 +08:00
|
|
|
|
|
|
|
|
|
|
success: 成功标志(True/False)
|
|
|
|
|
|
dx_mm: 水平偏移(毫米)
|
|
|
|
|
|
dy_mm: 垂直偏移(毫米)
|
|
|
|
|
|
cx: 中心点 x 坐标(像素)
|
|
|
|
|
|
cy: 中心点 y 坐标(像素)
|
|
|
|
|
|
message: 错误信息或成功提示
|
2025-10-22 17:52:29 +08:00
|
|
|
|
|
|
|
|
|
|
##该函数返回一个包含下列字段的字典2.0:
|
|
|
|
|
|
|
|
|
|
|
|
success: 成功标志(True/False)
|
|
|
|
|
|
dx_mm: 水平偏移(毫米)
|
|
|
|
|
|
dy_mm: 垂直偏移(毫米)
|
|
|
|
|
|
cx: 中心点 x 坐标(像素)
|
|
|
|
|
|
cy: 中心点 y 坐标(像素)
|
|
|
|
|
|
message: 错误信息或成功提示
|
|
|
|
|
|
class_id: 检测类别 ID #这里是bag的id是0
|
|
|
|
|
|
obj_conf: 检测置信度 #这就是识别为料袋的置信度
|
|
|
|
|
|
bbox: 检测矩形框 [x_left, y_top, width, height]
|
|
|
|
|
|
message: 错误信息或成功提示
|
|
|
|
|
|
|
|
|
|
|
|
|