0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开发一款segmentation标记的工具

jf_cVC5iyAO 来源:易心Microbit编程 2023-01-13 17:07 次阅读

目前市面上的图片标记工具琳琅满目,不同的标记几乎都能找到相对应的标记工具来使用,但是,能加以客制化适应特殊需求的却不多,因此,本文试着开发一款segmentation标记的工具,能够针对不同标记公司及用户的需求以加入特定标记功能,也能够兼容于特别指定的输入输出要求。

PixelAnnotationTool

PixelAnnotationTool是一款简单方便的segmentation工具,之前所训练的道路区域检测模型,便是用这工具来标记道路区域。

e9cfcff2-931a-11ed-bfe3-dac502259ad0.png

优点:

1.支援Linux, Windows, Mac等平台。

2.免费, 开源。

3.支持多标记:不同颜色代表不同的类别class,点选便可标记涂刷各种标记。

4.直接将segmentation结果存为png格式的mask檔。

5.可用鼠标图片放大缩小,可进行精细的标记调整。

缺点:

1.自定类别繁锁:预设为COCOdataset的类别,要修改为自己的类别须汇出config json档后,自行修改再载入。

2.开启一个档案便会产生一个页签,超过某数量后便无法再开启其它图档,需关闭页签后才能再开其它档案。

3.使用点按方式调整透明度、笔筛大小等,但调整按键过小,且要重复点击多次后才能到达需要的数值。

4.无法另外设定标记mask的储存路径,默认只能与dataset图片放置于同一路径。

5.标记mask图片默认皆为输出三张color_mask、_mask、_watershed_mask,名称及种类无法更改。

自制的Segmentation Tool

自行开发的segmentation tool,可针对需求加以客制功能,例如,在碰到不晓得怎么标记的图片,希望有个按钮将此图片移到指定文件夹,好让其它人员来review教导。「删除」的功能也是一样,他们不希望图片直接被删除,而是移到指定区域,代表这些图片不需要标记。此外,在输入及输出的图片命名格式,也可依据需求来修改。

开发使用的组件

开发此Tool UI的工具是采用CVUI:https://dovyski.github.io/cvui/,这是一套另人印象深刻的好用工具,对于那些只想单纯用OpenCV开发的人,不需要辛苦的用绘图指令刻出各种按钮组件了,CVUI已经替你作好,而且不仅仅是阳春简单的版面。

e9e07c62-931a-11ed-bfe3-dac502259ad0.png

不过,由于OpenCV本身就不支持显示中文,因此,CVUI也无法显示中文字型,这是唯一比较可惜的地方。

特色:

1.简单、轻量

2.仅需要OpenCV无需其它组件

3.完全基于OpenCV绘图产生,不需要OpenGL或Qt等套件

4.采用C开发,速度快

5.使用行列方式自动排列,不需担心组件的位置

6.提供简单功能完整的mouse API

7.不多不少的接口组件(约11个)

8.支援C++Python

安装:

pip install cvui

基本用法:

下方范例为产生一张空白的图档frame,然后再上面显示Hello world!

注意原有的cv2.imshow 已被 cvui.imshow 所取代。

如果想用cv2.imshow,那么可在cv2.imshow之前先呼叫cvui.update()。cv2.imshow+cvui.update()就等于cvui.imshow()

importnumpy as np

importcv2

importcvui

WINDOW_NAME= ‘CVUI Test’

cvui.init(WINDOW_NAME)

frame =np.zeros((200, 400, 3), np.uint8)

whileTrue:

frame[:] = (49, 52, 49)

cvui.text(frame, 10, 15, ‘Hello world!’)

cvui.imshow(WINDOW1_NAME,frame)

if cv2.waitKey(20) == 27:

break

OpenCV画面的priority

由于程序同时需显示三个画面:工具栏、编辑主画面、放大画面,这些画面都是透过OpenCV的imshow()命令来执行,我们必须先呼叫setWindowProperty,让工具栏及放大画面的窗口皆保持在编辑主画面上方,否则会被遮盖(后方数字愈大则在愈上方)。

cv2.setWindowProperty(WINDOW_NAME,cv2.WND_PROP_TOPMOST, 1)

使用接口

总共分为三个窗口:工具栏、主图片、以及Zoom放大三个窗口。

为了提供伊甸的标记人员操作方便,工具栏图示特意放得较大,且以方便按到为原则,显示文字也以直觉易懂为主。

ea13bb54-931a-11ed-bfe3-dac502259ad0.png

1.点按数字0-9可调整图片mask的透明度,确定mask是否正确。

ea22e5ca-931a-11ed-bfe3-dac502259ad0.png

ea64113a-931a-11ed-bfe3-dac502259ad0.png

ea7244e4-931a-11ed-bfe3-dac502259ad0.png

2.笔刷调整,可于工具栏上预览目前笔刷的大小。鼠标左键为白色,右键为黑色,代表在黑白的mask上增加及减少区域。

3.「存盘」按钮:直接将目前看到mask所编修的画面,存成黑白mask檔(png格式),若没有按此键存档就跳到其它张,不会储存。

4.「不会」及「删除」按钮:此两个按钮会把目前图片移到指定的区域(可在配置文件中修改域位置),方便事后作检视的动作。

5.「上一张」及「下一张」:切换图片使用。

6.Zoom放大区:放大预览目前鼠标所在的区域。放大倍率可在配置文件中调整。

.ini 配置文件说明

[PATHS]

#待标注图片的路径(例如imagesf1)

source_path = images

#不晓得怎么标注的图片, 要存放的路径(「不会」按钮)

unknown_path = unknown

#不需要标注的图片, 要存放的路径(「删除」按钮)

removed_path = dont_need

[DISPLAY]

#工具栏的方向:0为横向, 1为踪向。

tool_box = 1

[masks]

#是否要在标记完成所储存的mask图档,文件名前方加上额外字符串。(空白代表不需要)

txt_prefix =

#是否要在标记完成所储存的mask图档,文件名后方加上额外字符串。(空白代表不需要)

#下方范例,代表要加上 _mask 字符串,可让PixelAnnotationTool程序读取。

txt_append = _mask

#储存的mask图档格式

ext_format = .png

#放大预览的尺寸(单位为pixels)

zoom_size = 600

未来可加入的功能

针对不同的标记对象,可加入该对象相关的mask检测功能。例如此次的目标物为人物,那么可加入训练好的人物mask检测模型,先替用户产生预先mask好的图片,让用户进行编修,以加快标记mask的速度。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenGL
    +关注

    关注

    1

    文章

    84

    浏览量

    29026
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40789
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473

原文标题:影像Segmentation工具开发

文章出处:【微信号:易心Microbit编程,微信公众号:易心Microbit编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一款功能强大的串口监视、检测、分析工具,Serial Monitor

    Serial Monitor是一款功能强大的串口监视、检测、分析工具,软件使用更加简单,尤其适合开发人员使用。 
    发表于 05-26 09:05

    求推荐一款ARM开发

    想学习ARM,希望大家给推荐一款ARM开发板,相对来说学习资料(中文最好)多点的。嗯,在ARM9与ARM11中选哪个好点?大家都用过哪
    发表于 12-19 16:48

    钱我来出,现有一款极具市场的工具,苦于自己是市场人员,无能力开发。。。。

    本帖最后由 zgd110 于 2016-3-1 14:21 编辑 有一款极具市场的工具,苦于自己是市场人员,无能力开发位资深PCB行业高手
    发表于 03-01 14:19

    寻求一款好的ARM类型的开发

    在近期想学习下嵌入式开发,希望各位大神能推荐一款好的ARM内核的开发板。不胜感谢!!!!
    发表于 05-04 16:25

    一款用于通信硬件的开发工具

    一款用于通信硬件的开发工具
    发表于 10-22 10:19

    Keil MDK 和 IAR 两ARM开发工具区别

    Keil MDK 和 IAR 两ARM开发工具区别比较首先要说明,没有那款开发工具是万能的,也没有那款工具在所有方面都具有绝对优势。对于Keil MDK-ARM和IAR两
    发表于 07-01 07:02

    如何选择一款适合自己的Arduino控制器

    ,都可以通过本文了解Arduino是什么,为什么Arduino广受欢迎,如何选择一款适合自己的Arduino控制器、Arduino开发工具、Arduino的数据类型、变量和常量,结合Arduino常用的基本函数,就可以制作各种小作品。
    发表于 07-13 09:07

    一款简易的自平衡小车设计

    直立智能车设计摘 要随着微电子控制技术的发展和人们对出行工具的日益增长的需求,一款简单易操作、容易携带、清洁无污染的两轮自平衡车开始走进大众的视野,但这种小型代步工具仍可能存在定的不
    发表于 08-06 08:59

    Visual Studio Code开发工具介绍

    俗话说,工欲善其事,必先利其器。我们做单片机这行的,少不了和 MCU 的各式各样的工具打交道,比如 Keil,IAR,PADS 等等。那么,一款得心应手的开发工具,相对于
    发表于 11-01 09:08

    怎样挑选一款MCU平台进行嵌入式系统开发

    如今,嵌入式系统开发往往基于平台模式。MCU平台包括MCU及其相关器件(外延器件、配套器件等),集成开发环境(开发板、开发工具、中间件等),以及操作系统等。半导体厂商在推出
    发表于 11-03 08:42

    推荐一款比较好的嵌入式开发

    学习嵌入式,必不可少的工具就是开发板。对新手而言,学嵌入式用哪个开发板好,下面为大家推荐一款比较好的嵌入式
    发表于 11-08 06:38

    如何开发一款自己的App

    毫无疑问,开发一款自己的App对于初学者来说,无论从技术学习,还是找工作(或者装x),都是大利器。那么如何才能快速上手,开发一款属于自己的
    发表于 12-17 06:10

    一款实用的多功能开发调试工具H7-TOOL介绍

    H7-TOOL的最终目标:1、为单片机工程师提供一款实用的多功能开发调试工具。2、相信很多人有带板子回家调试、或带板子出差调试的情况。因为产品问题是无法预知的,多半情况不可能带齐全套测试工具
    发表于 02-16 06:07

    INGUN全新最小电动标记工具

    INGUN公司致力于开发用于电路板标记的最小电动标记工具。 新标记工具有令人印象深刻的紧凑设计。可更换的刻刀确保了能够简便、快速并且在无需任何工具
    发表于 06-29 11:14 414次阅读

    INGUN全新最小电动标记工具

    INGUN公司致力于开发用于电路板标记的最小电动标记工具。 新标记工具有令人印象深刻的紧凑设计。可更换的刻刀确保了能够简便、快速并且在无需任何工具
    的头像 发表于 08-27 17:28 4334次阅读