python用opencv将标注提取画框到对应的图像中

yizhihongxing

以下是详细讲解"Python用OpenCV将标注提取画框到对应的图像中"的完整攻略。

准备工作

在开始前,需要安装以下库:

  • opencv-python
  • matplotlib

安装方法:在命令行中输入 pip install 库名。比如pip install opencv-python安装opencv-python库。

步骤一:读取图像和标注文件

首先,我们需要从本地读取图像和对应的标注文件。我们假定图像和标注文件处于同一文件夹下,图像文件名是image.jpg,标注文件名是annotation.txt

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像
img = cv2.imread('image.jpg')

# 读取标注文件
with open('annotation.txt') as f:
    annotation = f.read().splitlines()

步骤二:解析标注文件

标注文件中每一行都表示一个框的位置信息,包含以下四个值:

  • xmin: 左上角x坐标
  • ymin: 左上角y坐标
  • xmax: 右下角x坐标
  • ymax: 右下角y坐标

我们需要将这些值存储为一个数组,方便后面使用。

# 解析标注文件
boxes = []
for line in annotation:
    xmin, ymin, xmax, ymax = [int(x) for x in line.split()]
    box = [xmin, ymin, xmax, ymax]
    boxes.append(box)

步骤三:在图像中画框

我们已经将标注信息解析出来了,现在我们需要在图像中画出这些框。

# 在图像中画框
for box in boxes:
    xmin, ymin, xmax, ymax = box
    cv2.rectangle(img, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)

最后一个参数(0, 255, 0)表示绿色,宽度为2。

步骤四:显示图像

现在我们已经在图像中画好了框,我们可以使用Matplotlib库来显示图像。

# 显示图像
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

这将会用彩色显示图片。

示例一:

假设我们的annotation.txt里面的内容如下:

10 10 100 100
50 170 200 300

运行上述代码后,将会在图像中画出两个框,第一个框的左上角在(10, 10),右下角在(100, 100),第二个框的左上角在(50, 170),右下角在(200, 300)

示例二:

假设我们的annotation.txt里面的内容如下:

400 200 500 300

对应的图像文件image.jpg是一张白色背景,没有任何内容的图片。

运行上述代码后,将会在图像中画出一个框,左上角在(400, 200),右下角在(500, 300)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python用opencv将标注提取画框到对应的图像中 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析

    从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析 介绍 在 Node.js 应用程序开发中,数据库是经常使用的一种数据存储方式。Node.js 支持的数据库种类众多,常见的包括 SQLite3 和 MongoDB。 本教程会从零开始,向大家介绍如何在 Node.js 中使用 SQLite3 和 MongoDB,以及它们在 Node.…

    人工智能概览 2023年5月25日
    00
  • 终于搞懂了Python中super(XXXX, self).__init__()的作用了

    当我们在Python的类中定义了一个子类,为了让子类能够使用父类中的属性和方法,我们通常会在子类中使用super()关键字调用父类的初始化方法。super()关键字的常用格式是super(子类名, self),当我们在子类中使用这个语句时,实际上是在调用父类中的方法。 下面我们来具体了解一下在Python中使用super()这个关键字的方法: super()…

    人工智能概论 2023年5月24日
    00
  • qqexplorer怎么用 如何使用qqexplorer教程

    QQ浏览器怎么用?使用QQ浏览器教程 QQ浏览器是腾讯公司推出的一款浏览器,功能强大,界面简洁,操作便捷。下面我们来详细讲解QQ浏览器的使用教程。 下载与安装 首先,打开浏览器,进入QQ浏览器官网(https://browser.qq.com/),点击下载按钮,下载适合你操作系统版本的QQ浏览器安装包。 接着,找到下载的安装包,双击打开,按照提示进行安装,即…

    人工智能概览 2023年5月25日
    00
  • PHP编译configure时常见错误的总结

    PHP编译configure时常见错误的总结 在编译PHP时,configure是非常重要的一个步骤,不能正确进行configure,之后的make和make install都有可能失败,因此,总结一些常见的configure错误并解决这些错误是非常必要的。 1. configure: error: Cannot find OpenSSL’s 这个错误是因为…

    人工智能概览 2023年5月25日
    00
  • Django框架实现分页显示内容的方法详解

    Django框架实现分页显示内容的方法详解 在网页开发中,经常需要对数据进行分页显示,Django框架也提供了非常便捷的分页功能,本文将详细介绍Django框架实现分页显示内容的方法。 一、分页原理 分页实质是对数据进行分段显示。对于数据量大的应用,直接将所有数据渲染在一个页面会导致加载过慢,加载时间长,用户体验度下降等问题,因此需要将数据进行分页显示。 D…

    人工智能概论 2023年5月25日
    00
  • tensorflow pb to tflite 精度下降详解

    首先我们需要明确一点,将TensorFlow pb模型转换为TensorFlow Lite格式可能会导致精度下降,主要原因是两种格式的计算方式不同。而这种精度下降的原因有很多,下面我们逐一分析。 原因一:量化 TensorFlow Lite是一种被量化的格式,也就是说,它将在一定程度上损失精度以换取性能的提升。这种损失的程度取决于模型本身的精度以及量化的方式…

    人工智能概论 2023年5月25日
    00
  • django模型类中,null=True,blank=True用法说明

    下面我将详细讲解“django模型类中,null=True,blank=True用法说明”的完整攻略。 前置知识 在进行本文的学习之前,你需要了解以下一些相关的术语和概念: Django:Django 是一个用 Python 编写的高级 Web 框架,它可以快速构建出丰富、动态的网站。 模型类(Model Class):模型类是 Django 中用于描述数据…

    人工智能概论 2023年5月25日
    00
  • vue+socket.io+express+mongodb 实现简易多房间在线群聊示例

    下面我将详细讲解“vue+socket.io+express+mongodb 实现简易多房间在线群聊示例”的完整攻略,具体步骤如下: 1. 环境准备 在开始编程之前,需要先准备好必要的环境,包括: Node.js及npm包管理器 MongoDB数据库 Vue.js框架 在确认这些工具已经就绪后,接下来可以开始进行实现了。 2. 服务端实现 本示例中,我们选用…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部