labelImg 修改不同类别的颜色(点大小、标签大小、框角)

1. 问题

在我的任务中,有 blue_objgreen_objyellow_obj ,但它们显示在不同颜色的框中,这使得我很难检查注释。我直接修改 box 的颜色后,下一张图片就不生效了。我应该如何将 box 的颜色修改为特定颜色?

例如:

  • blue_obj:命名是蓝色,但 box 是黄色
  • red_obj:命名是红色,但 box 是蓝色
  • yellow_obj:命名是黄色,但 box 是红色

以上这些框的颜色就会让人混乱。

2. 解决方案

为了解决这个问题,我们可以参考《LabelImg目标检测标注工具之标记框修改显示明显、特定标签指定颜色》这篇文章,具体做法为:

Step 1 下载 labelImg 的源码,下载地址为:labelImg

Step 2 根据 Readme -> Installation -> Build from source,按照不同操作系统安装相关依赖

pip install pyqt=5
pip install -c anaconda lxml

Step 3 修改 labelImg\libs\utils.py 文件中的函数:

"""
    函数解释:根据text(即标签名)生成对应颜色
    修改自己需要的标签
"""
def generate_color_by_text(text):
    s = ustr(text)
    hash_code = int(hashlib.sha256(s.encode('utf-8')).hexdigest(), 16)
    r = int((hash_code / 255) % 255)
    g = int((hash_code / 65025) % 255)
    b = int((hash_code / 16581375) % 255)
    Q = QColor(r, g, b, 155)
    
    # RGBA格式: (R, G, B, 透明度),范围均为 [0, 255],其中透明度的越大越不透明,越小越透明
    if text == "类别1": # 类别1 设置为红色(完全不透明)
        Q = QColor(255, 0, 0, 255)
    elif text == "类别2": # 类别2 设置为绿色(完全不透明)
        Q = QColor(0, 255, 0, 255)
    elif text == "类别3": # 类别3 设置为蓝色(完全不透明)
        Q = QColor(0, 0, 255, 255)
    return Q

💡 Tips:其中 类别 指的是具体的类别名称,比如 catdog 这种。

Step 4 编译源码,使上述修改生效:

pyrcc5 -o libs/resources.py resources.qrc

Step 5 打开修改后的 labelImg

python labelImg.py

3. 修改 box 的四个角的大小和 label 名称的大小

修改 libs\shape.py 文件:

class Shape(object):
    P_SQUARE, P_ROUND = range(2)

    MOVE_VERTEX, NEAR_VERTEX = range(2)

    # The following class variables influence the drawing
    # of _all_ shape objects.
    line_color = DEFAULT_LINE_COLOR
    fill_color = DEFAULT_FILL_COLOR
    select_line_color = DEFAULT_SELECT_LINE_COLOR
    select_fill_color = DEFAULT_SELECT_FILL_COLOR
    vertex_fill_color = DEFAULT_VERTEX_FILL_COLOR
    h_vertex_fill_color = DEFAULT_HVERTEX_FILL_COLOR
    point_type = P_ROUND
    point_size = 8  # 点的大小
    scale = 1.0
    label_font_size = 6  # 标签的字体大小

💡 Tips:要想让每一个框在旁边显示其类别,可以使用快捷键 ctrl + shift + p

4. [补充] RBGA 颜色大全

RGB颜色大全(HEX、对照表、Matplotlib、plt、好看的颜色)

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 11:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 11:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 11:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 11:02:03       18 阅读

热门阅读

  1. gitk查看被删除的单个文件的所有历史记录

    2023-12-15 11:02:03       44 阅读
  2. Vue学习笔记-Vue3中的shallowReactive和shallowRef

    2023-12-15 11:02:03       44 阅读
  3. 英语六级作文好句

    2023-12-15 11:02:03       30 阅读
  4. 【antd】 Pagination.onChange获取不到pageSize值的原因

    2023-12-15 11:02:03       37 阅读
  5. Windows下ping IP+端口的方法

    2023-12-15 11:02:03       46 阅读
  6. 飞天使-docker知识点6-容器dockerfile各项名词解释

    2023-12-15 11:02:03       31 阅读
  7. 力扣labuladong——一刷day74

    2023-12-15 11:02:03       36 阅读
  8. filecmp --- 文件及目录的比较

    2023-12-15 11:02:03       36 阅读
  9. mysql binlog_ignore_db参数的效果详解

    2023-12-15 11:02:03       33 阅读
  10. 9月7日算法学习笔记(栈)

    2023-12-15 11:02:03       33 阅读