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

    文章

    86

    浏览量

    30466
  • OpenCV
    +关注

    关注

    33

    文章

    651

    浏览量

    44433
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89602

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    如何开发一款自己的App

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

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

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

    一款正负序计算小工具

    电子发烧友网站提供《一款正负序计算小工具.exe》资料免费下载
    发表于 01-15 14:45 41次下载

    FlyMcu_一款stm32的下载工具

    一款stm32的下载工具,适用于各种stm32型号,感兴趣的小伙伴们可以看看。
    发表于 07-26 11:37 334次下载

    INGUN全新最小电动标记工具

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

    INGUN全新最小电动标记工具

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

    介绍一款基于go的windows信息收集工具

    一款基于go的windows信息收集工具,主要收集目标设备rdp端口登录、mstsc远程连接记录、mstsc密码和安全事件中。
    的头像 发表于 09-09 09:47 1642次阅读

    介绍一款有源滤波器的设计工具

      滤波器分为有源滤波器和无源滤波。有源滤波器主要有,Sallen-Key和Multiple Feedback滤波器。 现在介绍一款有源滤波器的设计工具,这是一款ADI自带的设计工具
    的头像 发表于 11-23 16:06 5781次阅读
    介绍<b class='flag-5'>一款</b>有源滤波器的设计<b class='flag-5'>工具</b>

    一款专业且全面的嵌入式开发调试工具

    不知道大家平时做嵌入式开发时用调试工具进行调试,今天给大家分享一款专业且全面的嵌入式调试工具集:Micro-Lab。
    的头像 发表于 04-15 14:10 1960次阅读

    一款用于Windows的开源反rookit (ARK)工具

    OpenArk 是一款用于 Windows 的开源反 rookit (ARK) 工具。Ark是Anti-Rootkit的缩写,它是一款逆向/编程帮手,也是用户发现操作系统中隐藏恶意软件的工具
    的头像 发表于 07-19 15:08 5180次阅读
    <b class='flag-5'>一款</b>用于Windows的开源反rookit (ARK)<b class='flag-5'>工具</b>

    介绍一款智能Web弱口令爆破工具

    Boom 是一款基于无头浏览器的 Web 弱口令爆破工具
    的头像 发表于 08-04 11:28 2970次阅读

    安森美推出一款基于PLECS的具有独特功能的领先在线仿真工具

    Elite Power仿真工具是安森美(onsemi)推出的一款基于PLECS的具有独特功能的领先在线仿真工具,适用于软/硬开关应用,使工程师在开发周期的早期阶段,
    的头像 发表于 03-20 09:58 1507次阅读

    如何眼定位SQL的代码来源:一款SQL染色标记的简易MyBatis插件

    作者:京东物流 郭忠强 导语 本文分析了后端研发和运维在日常工作中所面临的线上SQL定位排查痛点,基于姓名贴的灵感,设计和开发一款SQL染色标记的MyBatis插件。该插件轻量高效,对业务代码无
    的头像 发表于 03-05 11:36 740次阅读
    如何<b class='flag-5'>一</b>眼定位SQL的代码来源:<b class='flag-5'>一款</b>SQL染色<b class='flag-5'>标记</b>的简易MyBatis插件