简介
什么是图片标注?众所周知,机器学习是需要数据支撑的,比如你想让机器认识图片中的猫,就得把很多已经有答案的图给这个机器看,就像我们看例题一样。而图片标注就是给图片这个例题加上答案。比如我们要框出图片中猫,最后把坐标以及原图打包作为一个学习样本,就可以给模型食用啦。
这款控件就完成的这样的一件事,支持对图片进行画框、调整、贴上标签等,并且框不局限于矩形,可以扩展。
效果预览
可以在我的项目主页预览效果图,这里图片大小有限制,压缩了效果不好。
也可以直接clone下整个项目运行sample查看效果。
添加到你的项目
第一步 在你的根项目的build.gradle中repositories末尾添加:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
第二步 添加依赖
dependencies {
implementation 'com.github.SirLYC:ImageLabelView:{latest version}'
}
在代码中使用
你可以先查看样例 sample code
第一步 添加到你的布局
第二步 把一张图片设置进去(通过bitmap形式)
类似于ImageView的CenterInside表现。Bitmap可以为空,但是会清空之前的所有标签。
val bitmap: Bitmap? = ... // download or read from disk
label.setBitmap(bitmap);
第三步 在4种模式下完成工作
- PREVIEW
这是默认模式。每当你设置一个新的bitmap时都会改变到这个模式。在这个模式下,你可以移动或放大缩小图片。 - DRAW
在这个模式可以画框。比如矩形框,对角就是你按下和抬起时的位置。手指抬起后,会选中这个框进入SELECT模式。 - UPDATE
在这个模式可以改变框的大小或者位置。可以拖动一个角或者一条边改变大小,或者按到一个标签中央移动它。 - SELECT
在这个模式下可以通过点击或长按选中一个标签。标签选中后可以用如下代码获取:
label.selectingLabel()
这个模式一般用于处理messaege属性的输入或者删除它。
Step4: 导出数据
拿到Label的引用后直接调用它的 getData() 方法和 message 属性获取信息。
待完成/修复
- [ ] 配置信息改变时会丢失状态
- [ ] 圆形的框
- [ ] 三角形的框
- [ ] 其他多边形...