💊 药片精确计数 Skill
自动识别图片中的药片,按形状和大小分类计数。
功能
- ✅ 自动检测图片中的所有药片
- ✅ 分类:小圆形、中圆形、大圆形、椭圆形
- ✅ 逐个编号标注,生成结果图片
- ✅ 支持 JSON / 文本两种输出格式
- ✅ 处理粘连药片(分水岭算法)
使用方法
基本用法
python3 scripts/pill_counter.py <图片路径>
指定输出格式
python3 scripts/pill_counter.py image.jpg --output json
保存标注结果图
python3 scripts/pill_counter.py image.jpg --save result.jpg
完整参数
python3 scripts/pill_counter.py image.jpg --output text --save result.jpg
输出示例
文本输出(默认)
=============================================
📊 药片计数结果
=============================================
✅ 检测总数: 240 粒
🟢 小圆形: 13 粒
🔵 中圆形: 204 粒
🟠 椭圆形: 23 粒
🟢=小圆 🔵=中圆 🟣=大圆 🟠=椭圆
=============================================
JSON 输出
{
"total": 240,
"image_size": [3072, 4096],
"categories": {
"小圆形": 13,
"中圆形": 204,
"椭圆形": 23
}
}
分类说明
| 类型 | 识别规则 | 颜色标记 |
|---|---|---|
| 小圆形 | 圆形度>0.75,面积<中位数70% | 🟢 绿色 |
| 中圆形 | 圆形度>0.75,面积在中位数±40% | 🔵 青色 |
| 大圆形 | 圆形度>0.75,面积>中位数140% | 🟣 紫色 |
| 椭圆形 | 宽高比>1.4 或 <0.7 | 🟠 橙色 |
依赖
- Python 3.6+
- opencv-python-headless
- numpy
注意事项
- 图片需要清晰,药片与背景有明显对比度
- 白色药片在深色背景上效果最佳
- 药片有粘连时会自动分离,极端重叠可能影响精度
- 碎片可能被误识别为小药片