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

文章目录

  • 0. Background
  • 1. Method
  • 2. Code
  • 3. Example: 雄鹿红外图像标注
    • 3.1 选择色彩空间
    • 3.2 执行阈值
    • 3.3 执行形态学操作
    • 3.4 轮廓分析以找到边界框
    • 3.5 过滤不需要的轮廓
    • 3.6 绘制边界框
    • 3.7 以需要的格式保存
  • Reference

本文将手把手教你用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【项目源码】一套基于springboot+Uniapp框架开发的智慧医院3D人体导诊系统源码

智慧医院3D人体导诊系统源码 开发语言:java 开发工具:IDEA 前端框架:Uniapp 后端框架:springboot 数 据 库:mysql 移 动 端:微信小程序、H5 “智慧导诊”以人工智能手段为依托,为人们提供智能分诊、问病信息等服务,在一定程度上满足了人们自我健康管理、精准挂号…

6个好看的wordpress模板

简站wordpress服务业通用主题 2023年立秋纪念版,简站wordpress服务行业通用主题,适合服务行业企业官网使用。 https://www.jianzhanpress.com/?p5393 小语种翻译wordpress主题 小语种国家外贸网站建设需要的wordpress主题模板,适合做小语…

单链表实现约瑟夫环

大家对约瑟夫环是比较陌生的,但是对于大多数人来说,丢手绢却一点都不陌生,其实约瑟夫环和丢手绢差不多。 约瑟夫环 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。…

Android 10.0 系统sim卡4G LTE信号格数对应的信号强度值修改

1.前言 在10.0的系统产品开发中,在手机通讯这块功能也是特别重要的,在手机插入手机sim卡后,会根据当前的sim卡信号来显示对应的 sim卡信号显示格数,所以为了增强相关的信号格数,就需要修改sim卡对应的信号强度值来实现相关的功能 2.系统sim卡4G LTE信号格数对应的信号强…

分享78个行业PPT,总有一款适合您

分享78个行业PPT,总有一款适合您 78个行业PPT下载链接:https://pan.baidu.com/s/19UL58I5Z1QZidVrq50v6fg?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

海信电视安装第三方软件-电视家分享(侵权联系作者删除)

1.海信电视安装第三方软件电视家,相对来说还是比较复杂的。首先要准备电视安装包,一般来说是电视家海信专用安装包,大家可以搜索电视家的官方网站。这里附上官网地址https://www.tvapk.net/dianshijia/ 点击上方的电视软件。 可以进入下载软…

中兴R5300G4服务器查看服务器、主板序列号及硬盘RAID信息

本文在操作系统带内通过指令操作查看中兴R5300G4服务器、主板序列号及硬盘RAID信息。 一、中兴R5300G4服务器查看服务器、主板序列号 在Linux服务器上,可以使用dmidecode命令来查看服务器的硬件相关信息,由于该命令要读取系统的硬件信息,因…

阅读《极客时间 | Kafka核心技术与实战》(一)【Kafka入门】

阅读《极客时间 | Kafka核心技术与实战》 为什么要学习Kafka消息引擎系统ABC一篇文章带你快速搞定Kafka术语我应该选择哪种Kafka?聊聊Kafka的版本号 为什么要学习Kafka 如果你是一名软件开发工程师的话,掌握 Kafka 的第一步就是要根据你掌握的编程语言去…

MPLS VPN功能组件(2)

MP-BGP 采用地址族(Address Family)来区分不同的网络层协议,以便正确处理VPN-IPv4路由 传统的BGP-4(RFC1771)只能管理IPv4的路由信息,无法正确处理地址空间重叠的VPN的路由。 为了正确处理VPN路由,VPN使用RFC2858(Multiprotocol Extensions for BGP-4)中规定的MP-BG…

Vue3.0(四):Composition API的使用

Composition API 认识Composition API 前几篇文章中主要用Options API进行编写代码,但是有一些弊端 Options API弊端 在 Options API中,有data、watch、computed、methods以及生命周期函数各种各样的选项而一个变量,为了实现某个功能&#x…

【数据分析岗】8家知名企业秋招(含实习)面试题汇总

年底了,技术群组织了一场机器学习算法岗技术&面试讨论会,邀请了一些同学分享他们的面试经历,讨论会会定期召开,如果你想加入我们的讨论群或者希望要更详细的资料,文末加入。 喜欢本文记得收藏、关注、点赞 文章目…

力扣精选算法100道—— 连续数组(前缀和专题)

连续数组&#xff08;前缀和专题&#xff09; 目录 &#x1f6a9;了解题意 &#x1f6a9;算法原理 ❗为什么hash设置成<0,-1>键值对 ❗与和为K的子数组比较hash的键值对 &#x1f6a9;代码实现 &#x1f6a9;了解题意 我们看到给定数组里面只有0和1&#xff0c;我们…

植物生长调节剂行业调研:预计2029年将达到1.2亿美元

未来增长的重点势必在以中国为代表的亚太地区。尤其在我国农业现代化、无人化发展需求下&#xff0c;提升种植的效率和品质是必然需求&#xff0c;我国市场规模增速也将高于全球平均水平。植物生长调节剂的应用具有成本低、收效快、效益高、节省劳动力的优点&#xff0c;不仅对…

Elasticsearch:使用 LangChain 文档拆分器进行文档分块

使用 Elasticsearch 嵌套密集向量支持 这个交互式笔记本将&#xff1a; 将模型 “sentence-transformers__all-minilm-l6-v2” 从 Hugging Face 加载到 Elasticsearch ML Node 中使用 LangChain 分割器将段落分块成句子&#xff0c;并使用嵌套密集向量将它们索引到 Elasticse…

fghbbbbbbbbbb

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

LeetCode 二叉树/n叉树的解题思路

二叉树 二叉树特点是每个节点最多只能有两棵子树&#xff0c;且有左右之分二叉树的数据结构如下&#xff1a; public class TreeNode {//节点的值int val;//左子树TreeNode left;//右子树TreeNode right;TreeNode(int x) { val x; } }树节点的初始化&#xff1a; int val1;T…

Flink Checkpoint过程

Checkpoint 使用了 Chandy-Lamport 算法 流程 1. 正常流式处理&#xff08;尚未Checkpoint&#xff09; 如下图&#xff0c;Topic 有两个分区&#xff0c;并行度也为 2&#xff0c;根据奇偶数 我们假设任务从 Kafka 的某个 Topic 中读取数据&#xff0c;该Topic 有 2 个 Pa…

机器学习与深度学习

什么是机器学习 机器学习是一门跨学科的学科&#xff0c;它致力于研究和开发让计算机能够模拟人类学习行为的技术和方法。机器学习涉及多个学科的知识&#xff0c;如概率论、统计学、逼近论、凸分析、算法复杂度理论等&#xff0c;这些学科为机器学习提供了理论基础和数学工具…

【Linux】gdb调试与make/makefile工具

目录 导读 1. make/Makefile 1.1 引入 1.2 概念 1.3 语法规则 1.4 示例 2. Linux调试器-gdb 2.1 引入 2.2 概念 2.3 使用 导读 我们在上次讲了Linux编辑器gcc\g的使用&#xff0c;今天我们就来进一步的学习如何调试&#xff0c;以及makefile这个强大的工具。 1. mak…

nginx:配置内网转发阿里云oss图片加水印

图片水印文档 https://help.aliyun.com/zh/oss/user-guide/add-watermarks nginx配置如下 location ^~ /oss/ {if ( $request_uri ~* \.(png|jpg|jpeg) ){set $args "x-oss-processstyle/watermark";}proxy_pass http://<bucket>.oss-cn-beijing-internal.al…