简介

什么是图片标注?众所周知,机器学习是需要数据支撑的,比如你想让机器认识图片中的猫,就得把很多已经有答案的图给这个机器看,就像我们看例题一样。而图片标注就是给图片这个例题加上答案。比如我们要框出图片中猫,最后把坐标以及原图打包作为一个学习样本,就可以给模型食用啦。

这款控件就完成的这样的一件事,支持对图片进行画框、调整、贴上标签等,并且框不局限于矩形,可以扩展。

效果预览

可以在我的项目主页预览效果图,这里图片大小有限制,压缩了效果不好。

也可以直接clone下整个项目运行sample查看效果。

添加到你的项目

第一步 在你的根项目的build.gradle中repositories末尾添加:

allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}

第二步 添加依赖

dependencies {
implementation 'com.github.SirLYC:ImageLabelView:{latest version}'
}

在代码中使用

第一步 添加到你的布局

第二步 把一张图片设置进去(通过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 属性获取信息。

待完成/修复

[ ] 配置信息改变时会丢失状态

[ ] 圆形的框

[ ] 三角形的框

[ ] 其他多边形...

感谢大家的支持!再次贴上项目地址