目标检测图片截取目标分类图片

如果要训练一个分类模型却没有特定的分类数据集怎么办呢?可以换一种思路,将带有该目标的图片对所有想要的目标进行画标注框然后进行截图,就能得到特定的分类数据了。这么做的目的是:带有该目标的图片可能不会少,但是带有该目标且一张图内只有唯一一个目标的图片肯定少。

拿如下这张图片举例:
在这里插入图片描述
假设我们要训练一个车辆分类的模型,分类小车或者摩托车,首先我们先进行标注(因为只是举个例子所以就标注一部分):
在这里插入图片描述
然后编写截图代码:

import cv2
import json
import os

img_path = "/home/alpha/桌面/11/img"
json_path = "/home/alpha/桌面/11/json"
save_path = "/home/alpha/桌面/11/clsf"

files = os.listdir(json_path)
for file in files:
    if os.path.splitext(file)[-1] != ".json":
        continue
    img_file = os.path.join(img_path, os.path.splitext(file)[0] + ".jpg")
    json_file = os.path.join(json_path, file)
    json_data = json.load(open(json_file))
    i, j = 0, 0
    for shape in json_data["shapes"]:
        p = shape["points"]
        x1 = int(min(p[0][0], p[1][0]))
        y1 = int(min(p[0][1], p[1][1]))
        x2 = int(max(p[0][0], p[1][0]))
        y2 = int(max(p[0][1], p[1][1]))
        img = cv2.imread(img_file)
        img = img[y1:y2, x1:x2, :]
        img_save = ""
        # 根据自己的类别
        if shape["label"] == "car":
            img_save = save_path + "/car/" + os.path.splitext(file)[0] + "-" + str(i) + ".jpg"
            i += 1
        elif shape["label"] == "moto":
            img_save = save_path + "/moto/" + os.path.splitext(file)[0] + "-" + str(j) + ".jpg"
            j += 1
        else:
            continue
        print(shape["label"])
        cv2.imwrite(img_save, img)
        print(img_save)

查看结果:
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue前端与后端放在一起的搭建方式

1.首先把后端项目搭建好 去到项目的存放位置 2.然后cmd黑窗口输入命令创建vue项目 3.创建成功后回到后端项目进行合并 3.1在File处选择Project Structure 3.2选择模块 3.3找到自己的vue项目 3.4疯狂next最后create 3.5选择Apply并确定OK,恭喜您创建成功了 二、启动…

Windows bat隐藏运行窗口的几种方案

文章目录 一、背景 二、测试数据 三、隐藏bat运行窗口方案 1. 使用VBScript脚本 2. 使用mshta调用js或vbs脚本 3. 将bat编译为exe程序 4. 使用任务计划程序 一、背景 有些程序在执行批处理脚本时,可能会看到dos窗口,或者看到窗口一闪而过。如果批处理脚本…

Jwt令牌过滤器的下发和拦截(创建在前面)

创建Jwt令牌的方法在前面: JWT令牌的作用和生成https://blog.csdn.net/m0_71149935/article/details/135002840?spm1001.2014.3001.5501令牌的下发: 说明: 只用在浏览器访问服务器的时候校验账户信息是否正确,正确就创建Jwt令…

docker学习(九、分布式存储亿级数据知识)

docker学习(九、分布式存储亿级数据知识) 一、哈希取余分区二、一致性哈希算法分区三、哈希槽分区(重点) 内容整体是以Redis做分布式为例的~~~先出理论,后出实践docker操作 一、哈希取余分区 举个例子:目前…

航带模式拍完之后用重建大师跑出来的模型是弧形的,怎么处理?

答:空三设置-更多设置-定位方式中选择pos高精度,再跑一下看看。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型&a…

小区生活污水处理需要哪些设备和工艺

在小区生活中,污水处理是一个非常重要的环节,它关乎到环境的保护和居民的生活质量。因此,了解小区生活污水处理所需要的设备和工艺是至关重要的。 首先,在小区生活污水处理中,需要用到的设备包括污水收集系统、初级沉淀…

【1】自动化测试环境配置(ARM服务器)

想要从事 or 了解自动化测试开发、装备开发的小伙伴,本专栏内容将从0到1学习如何针对ARM服务器产品进行自动化测试平台的搭建,包括:测试界面的实现(GUI)、测试项的功能实现(压力测试、接口测试、版本更新&a…

工资计算_分支结构 C语言xdoj63

问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则…

腾讯文档助力CRM集成:无代码连接电商与广告

腾讯文档API的简介与优势 腾讯文档API是一个强大的工具,它允许企业通过简单的无代码开发来实现与电商平台和客服系统的智能连接。这种连接不仅提高了工作效率,还优化了数据管理。使用腾讯文档智能表,商家可以享受多样的列类型、多维视图展示…

【Python】—— 如果使用matplotlib做数据可视化

matplotlib做数据可视化 相关知识掌握matplotlib的基本使用方法1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图6. 等高线图7. 图形定制 掌握数据处理的基本方法1. 数据筛选2. 缺失值处理3. 异常值处理 理解数据可视化的原则和方法1. 选择合适的图表类型2. 避免数据混淆3. 突出重…

用Bat文件调用小牛翻译api快速翻译

为了帮助大家更加轻松地调用机器翻译api,本人探索实现了一种可以通过BAT文件来调用机器翻译api,对粘贴板中的文本进行翻译,并将翻译结果保存为txt文件。下面把实现步骤简要说明如下: 第一步:获取小牛机器翻译api 进入…

如何使用Docker进行容器的备份和恢复

一 简介: 在使用Docker进行应用程序的容器化部署时,我们经常需要对容器进行备份和恢复操作。备份容器可以保证数据的安全性,而恢复操作可以帮助我们快速恢复出现问题的容器。本文将介绍如何使用Docker进行容器的备份和恢复,同时提…

Centos开机进入grub命令行模式进入不了操作系统

环境:没有linux命令,没有initrd命令,没有init6命令 由于删除了/boot/efi/EFI/centos/grub.cfg ,重启服务器后,无法进入原来正常的系统,进入了grub命令行界面 备注:对于centos7/8/openEuler: 如果…

智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.和声算法4.实验参数设定5.算法结果6.参考文献7.MA…

RS®SMM100A 矢量信号发生器具备毫米波测试功能的中档矢量信号发生器

R&SSMM100A 矢量信号发生器 具备毫米波测试功能的中档矢量信号发生器 R&SSMM100A 矢量信号发生器在 100 kHz 至 44 GHz 的频率范围内提供优越的射频特性。这款仪器覆盖现有无线标准所使用的 6 GHz 以下的频段、新定义的最高 7.125 GHz 的 5G NR FR1 和 Wi-Fi 6E 频段以…

【Docker六】Docker-consul

目录 一、docker-consul概述 1、服务注册和发现: 1.1、服务注册和发现概念 1.2、服务注册和发现工作机制: 1.3、服务注册与发现的优点: 2、docker-consul概念 2.1、consul的主要特点: 二、consul架构部署: 1、…

实战 | OpenCV传统方法实现密集圆形分割与计数(详细步骤 + y源码)

导 读 本文主要介绍基于OpenCV传统方法实现密集圆形分割与计数应用,并给详细步骤和代码。 背景介绍 实例图片来源于网络,目标是分割下图中圆形目标并计数。 本文实现效果如下: 实现步骤 【1】灰度转换 + 均值滤波 + 二值化,得到参考背景 img = cv2.imread(src.jpg)c…

S1试讲讲稿

习题题目 答案 用到的概念: 概率之和等于1 E ( x ) ∑ i 1 4 x i P i E(x)\sum_{i1}^4x_iP_i E(x)∑i14​xi​Pi​ E ( x 2 ) ∑ i 1 4 x i 2 P i E(x^2)\sum_{i1}^4x_i^2P_i E(x2)∑i14​xi2​Pi​ V a r ( X ) Var(X) Var(X) ∑ i 1 4 ( x i − x ‾ ) 2…

微服务保护--线程隔离(舱壁模式)

一、线程隔离的实现方式 线程隔离有两种方式实现: 线程池隔离 信号量隔离(Sentinel默认采用) 如图: 线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身实现隔离效果 信号量隔离&#xff1a…

eclipse连接mysql数据库(下载eclipse,下载安装mysql,下载mysql驱动)

前言: 使用版本:eclipse2017,mysql5.7.0,MySQL的jar建议使用最新的,可以避免警告! 1:下载安装:eclipse,mysql在我之前博客中有 http://t.csdnimg.cn/UW5fshttp://t.csdn…