【Script】使用pyOpenAnnotate搭建半自动标注工具(附python源码)

本文将手把手教你用Python和OpenCV搭建一个半自动标注工具(包含详细步骤 + 源码),希望对大家有所帮助。

0. Background

样本标注是深度学习项目中最关键的部分,甚至在模型学习效果上起决定性作用。但是,标注工作往往非常繁琐且耗时。一种解决方案是使用自动图像标注工具,它可以大大减少标注的时间。

本文主要介绍的半自动标注工具为pyOpenAnnotate,此工具是基于Python和OpenCV实现,最新版本为0.4.0,可通过下面指令安装使用:

pip install pyOpenAnnotate
https://pypi.org/project/pyOpenAnnotate/

在这里插入图片描述

1. Method

【1】Threshold(二值化)只接受单通道图像,但这里并不是直接使用灰度转换图来处理,而是从灰度图、R、G、B、H、S、V通道图像中找到对比度最高的图像来做二值化。

【2】二值化之后并不能保证总是得到我们需要的掩码,有时会有噪声、斑点、边缘的干扰,所以加入了膨胀、腐蚀等形态学处理。

【3】最后通过轮廓分析得到对象的边界框,也就是左上角和右下角坐标。

2. Code

首先需要导入所需库:

import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['image.cmap'] = 'gray'

加载图像:

stags = cv2.imread('stags.jpg')
boars = cv2.imread('boar.jpg')
berries = cv2.imread('strawberries.jpg')
fishes = cv2.imread('fishes.jpg')
coins = cv2.imread('coins.png')
boxes = cv2.imread('boxes2.jpg')

选择色彩空间 (这里添加了 RGB和HSV,存储在字典中,方便验证使用):

def select_colorsp(img, colorsp='gray'):
    # Convert to grayscale.
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Split BGR.
    red, green, blue = cv2.split(img)
    # Convert to HSV.
    im_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    # Split HSV.
    hue, sat, val = cv2.split(im_hsv)
    # Store channels in a dict.
    channels = {
   
   'gray':gray, 'red':red, 'green':green, 
                'blue':blue, 'hue':hue, 'sat':sat, 'val':val

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-05 15:34:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-05 15:34:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-05 15:34:03       82 阅读
  4. Python语言-面向对象

    2024-02-05 15:34:03       91 阅读

热门阅读

  1. 25.泛型

    25.泛型

    2024-02-05 15:34:03      38 阅读
  2. Python教程|input()函数—输入(一):语法说明

    2024-02-05 15:34:03       50 阅读
  3. 1688商品详情页

    2024-02-05 15:34:03       40 阅读
  4. C&C++语言define和const区别

    2024-02-05 15:34:03       54 阅读
  5. PyTorch、NCNN、CV::Mat三者张量的shape

    2024-02-05 15:34:03       41 阅读