分享一个自己做的Android图片标注工具

简介

什么是图片标注?众所周知,机器学习是需要数据支撑的,比如你想让机器认识图片中的猫,就得把很多已经有答案的图给这个机器看,就像我们看例题一样。而图片标注就是给图片这个例题加上答案。比如我们要框出图片中猫,最后把坐标以及原图打包作为一个学习样本,就可以给模型食用啦。
这款控件就完成的这样的一件事,支持对图片进行画框、调整、贴上标签等,并且框不局限于矩形,可以扩展。

效果预览

可以在我的项目主页预览效果图,这里图片大小有限制,压缩了效果不好。
也可以直接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 属性获取信息。

待完成/修复

  • [ ] 配置信息改变时会丢失状态
  • [ ] 圆形的框
  • [ ] 三角形的框
  • [ ] 其他多边形…

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

https://github.com/SirLYC/ImageLabelView

    原文作者:渔船Mr_Liu
    原文地址: https://www.jianshu.com/p/6d9da08977f1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞