Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
Oil_Level_Recognition_System
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Oil_Level_Recognition_System
Commits
dd368057
Commit
dd368057
authored
Dec 05, 2025
by
余海波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Delete AUTO_DOT_README.md
parent
3774f38e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
166 deletions
+0
-166
AUTO_DOT_README.md
handlers/videopage/AUTO_DOT_README.md
+0
-166
No files found.
handlers/videopage/AUTO_DOT_README.md
deleted
100644 → 0
View file @
3774f38e
# 自动标点功能模块使用说明
## 功能概述
`auto_dot.py`
模块实现了基于YOLO分割掩码的自动标点功能,可以自动检测容器的顶部和底部位置,替代人工手动标点。
## 核心特性
-
**输入**
: 图片 + 检测框
-
**输出**
: 点位置信息 + 标注后的图片
-
**检测方法**
:
1.
**liquid底部 + air顶部**
(最可靠)
2.
**liquid底部 + liquid顶部**
(次选)
3.
**air底部 + air顶部**
(备选)
## 独立调试
### 1. 准备测试数据
将测试图片放置到:
```
D:\restructure\liquid_level_line_detection_system\test_data\test_image.jpg
```
### 2. 配置检测框
编辑
`auto_dot.py`
中的
`test_auto_dot()`
函数,修改
`boxes`
参数:
```
python
# 方式1: [x1, y1, x2, y2] 格式
boxes
=
[
[
100
,
200
,
300
,
600
],
# 第一个容器
[
400
,
200
,
600
,
600
],
# 第二个容器
]
# 方式2: [cx, cy, size] 格式
boxes
=
[
[
200
,
400
,
400
],
# 中心点(200, 400), 尺寸400
]
```
### 3. 运行测试
```
bash
cd
D:
\r
estructure
\l
iquid_level_line_detection_system
\h
andlers
\v
ideopage
python auto_dot.py
```
### 4. 查看结果
-
**控制台输出**
: 详细的检测过程和结果
-
**标注图片**
:
`D:\restructure\liquid_level_line_detection_system\test_output\auto_dot_result.jpg`
## API 使用示例
```
python
from
handlers.videopage.auto_dot
import
AutoDotDetector
import
cv2
# 1. 创建检测器
detector
=
AutoDotDetector
(
model_path
=
"path/to/model.dat"
,
device
=
'cuda'
# 或 'cpu'
)
# 2. 加载图片
image
=
cv2
.
imread
(
"test_image.jpg"
)
# 3. 定义检测框
boxes
=
[
[
100
,
200
,
300
,
600
],
# [x1, y1, x2, y2]
]
# 4. 执行检测
result
=
detector
.
detect_container_boundaries
(
image
=
image
,
boxes
=
boxes
,
conf_threshold
=
0.5
)
# 5. 获取结果
if
result
[
'success'
]:
for
container
in
result
[
'containers'
]:
print
(
f
"容器 {container['index']}:"
)
print
(
f
" 顶部: ({container['top_x']}, {container['top']})"
)
print
(
f
" 底部: ({container['bottom_x']}, {container['bottom']})"
)
print
(
f
" 高度: {container['height']}px"
)
print
(
f
" 置信度: {container['confidence']:.3f}"
)
# 保存标注图片
cv2
.
imwrite
(
"result.jpg"
,
result
[
'annotated_image'
])
```
## 输出数据结构
```
python
{
'success'
:
bool
,
# 检测是否成功
'containers'
:
[
{
'index'
:
int
,
# 容器索引
'top'
:
int
,
# 顶部y坐标
'bottom'
:
int
,
# 底部y坐标
'top_x'
:
int
,
# 顶部x坐标
'bottom_x'
:
int
,
# 底部x坐标
'height'
:
int
,
# 容器高度(像素)
'confidence'
:
float
,
# 检测置信度
'method'
:
str
# 检测方法
},
...
],
'annotated_image'
:
np
.
ndarray
# 标注后的图片
}
```
## 检测方法说明
### 方法1: liquid_air (最可靠)
-
**容器底部**
: liquid掩码的最低点
-
**容器顶部**
: air掩码的最高点
-
**适用场景**
: 同时检测到液体和空气
### 方法2: liquid_only (次选)
-
**容器底部**
: liquid掩码的最低点
-
**容器顶部**
: liquid掩码的最高点
-
**适用场景**
: 只检测到液体,未检测到空气
### 方法3: air_only (备选)
-
**容器底部**
: air掩码的最低点
-
**容器顶部**
: air掩码的最高点
-
**适用场景**
: 只检测到空气,未检测到液体
## 可视化标注
标注图片包含:
-
**绿色圆点**
: 容器顶部
-
**红色圆点**
: 容器底部
-
**青色连线**
: 容器高度
-
**水平参考线**
: 顶部和底部的水平位置
-
**文字标注**
: Top-N, Bottom-N, 高度值
## 注意事项
1.
**模型路径**
: 确保模型文件存在且可访问
2.
**检测框位置**
: 检测框应覆盖完整的容器区域
3.
**置信度阈值**
: 默认0.5,可根据实际情况调整
4.
**GPU加速**
: 建议使用CUDA加速,提高检测速度
## 调试技巧
1.
**查看控制台输出**
: 详细的检测过程日志
2.
**检查标注图片**
: 验证检测结果的准确性
3.
**调整检测框**
: 如果检测失败,尝试调整检测框的位置和大小
4.
**降低置信度**
: 如果检测不到掩码,尝试降低
`conf_threshold`
## 接入系统
调试成功后,可以在主系统中调用:
```
python
from
handlers.videopage.auto_dot
import
AutoDotDetector
# 在标注页面添加"自动标点"按钮
# 点击后调用 detector.detect_container_boundaries()
# 将返回的 top/bottom 坐标填充到标注点位置
```
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment