当前位置: 首页 > news >正文

将切分的图片筛选出有缺陷的

将切分的图片筛选出有缺陷的

  • 需求
  • 代码

需求

由于之前切分的图像有一些存在没有缺陷,需要再次筛选

将可视化的图像更改后缀
在这里插入图片描述
更改为xml的
在这里插入图片描述
可视化代码

可视化后只有7000多个图像
在这里插入图片描述

原本的图像有1W多张
在这里插入图片描述

在这里插入图片描述

代码

# 按照xml文件删除对应的图片
# coding: utf-8
from PIL import Image, ImageDraw, ImageFont
import os
import shutil
import cv2 as cv
import numpy as np
import json#删除重名图象文件def read_json(file_name):with open(file_name, 'rb') as f:data = json.load(f)return data#读取源配置文件的路径
def delete1(image_root_path,suffix):delImg = []for root, dirs, files in os.walk(image_root_path):# 使用os模块获取文件夹中所有文件的路径all_files = os.listdir(root)filtered_files = [file for file in all_files if file.endswith(suffix)]if (len(filtered_files)):# print(root)  #当前工作文件夹for i in range(len(filtered_files)):bmp_path = root + "\\" + filtered_files[i]delImg.append(filtered_files[i])return delImg#在目标文件中删除图象
def delete2(image_root_path,suffix,delImg):del_delImg = []for root, dirs, files in os.walk(image_root_path):# 使用os模块获取文件夹中所有文件的路径all_files = os.listdir(root)filtered_files = [file for file in all_files if file.endswith(suffix)]if (len(filtered_files)):print(root)  #当前工作文件夹for i in range(len(filtered_files)):bmp_path = root + "\\" + filtered_files[i]for j in range(len(delImg)):if(delImg[j]==filtered_files[i]):print(bmp_path)del_delImg.append(bmp_path)return del_delImgdef myCopyImg(del_delImg,desPath):if(len(del_delImg)>0):for i in range(len(del_delImg)):bmp_path = del_delImg[i]#os.remove(bmp_path)shutil.copy(bmp_path, desPath)  # shutil.copy函数放入原文件的路径文件全名  然后放入目标文件夹else:print("无文件")#替换列表中文件的后缀
def tihuanhouozhui(delImg):old_suffix1 = '.txt'old_suffix2 = '.xml'new_suffix = '.bmp'delImg = [file.replace(old_suffix1, new_suffix) for file in delImg]delImg = [file.replace(old_suffix2, new_suffix) for file in delImg]return delImgif __name__ == "__main__":#my_copy("./1/kuaisu.json","D:\\code\\select\\1\\","D:\\code\\select\\final\\")delImg1 = delete1("G:\\datasets\\coco\\vis",".xml")#delImg2 = delete1("E:\\黄花标注\\glass\\testtt\\yesann", ".xml")#delImg = delImg1+delImg2#delImg = delImg1#new_delImg = tihuanhouozhui(delImg1)# for i in range(len(delImg)):#     os.remove(delImg[i])del_delImg = delete2("G:\\datasets\\coco\\split\\xml",".xml",delImg1)desPath = "G:\\datasets\\coco\\final"myCopyImg(del_delImg,desPath)

在这里插入图片描述
将xml复制过来了

同理复制jpg

也是先改名
(将vis中的文件改为jpg)

在这里插入图片描述
总图像文件:

在这里插入图片描述

然后使用代码:

# 按照xml文件删除对应的图片
# coding: utf-8
from PIL import Image, ImageDraw, ImageFont
import os
import shutil
import cv2 as cv
import numpy as np
import json#删除重名图象文件def read_json(file_name):with open(file_name, 'rb') as f:data = json.load(f)return data#读取源配置文件的路径
def delete1(image_root_path,suffix):delImg = []for root, dirs, files in os.walk(image_root_path):# 使用os模块获取文件夹中所有文件的路径all_files = os.listdir(root)filtered_files = [file for file in all_files if file.endswith(suffix)]if (len(filtered_files)):# print(root)  #当前工作文件夹for i in range(len(filtered_files)):bmp_path = root + "\\" + filtered_files[i]delImg.append(filtered_files[i])return delImg#在目标文件中删除图象
def delete2(image_root_path,suffix,delImg):del_delImg = []for root, dirs, files in os.walk(image_root_path):# 使用os模块获取文件夹中所有文件的路径all_files = os.listdir(root)filtered_files = [file for file in all_files if file.endswith(suffix)]if (len(filtered_files)):print(root)  #当前工作文件夹for i in range(len(filtered_files)):bmp_path = root + "\\" + filtered_files[i]for j in range(len(delImg)):if(delImg[j]==filtered_files[i]):print(bmp_path)del_delImg.append(bmp_path)return del_delImgdef myCopyImg(del_delImg,desPath):if(len(del_delImg)>0):for i in range(len(del_delImg)):bmp_path = del_delImg[i]#os.remove(bmp_path)shutil.copy(bmp_path, desPath)  # shutil.copy函数放入原文件的路径文件全名  然后放入目标文件夹else:print("无文件")#替换列表中文件的后缀
def tihuanhouozhui(delImg):old_suffix1 = '.txt'old_suffix2 = '.xml'new_suffix = '.bmp'delImg = [file.replace(old_suffix1, new_suffix) for file in delImg]delImg = [file.replace(old_suffix2, new_suffix) for file in delImg]return delImgif __name__ == "__main__":#my_copy("./1/kuaisu.json","D:\\code\\select\\1\\","D:\\code\\select\\final\\")delImg1 = delete1("G:\\datasets\\coco\\vis",".jpg")#delImg2 = delete1("E:\\黄花标注\\glass\\testtt\\yesann", ".xml")#delImg = delImg1+delImg2#delImg = delImg1#new_delImg = tihuanhouozhui(delImg1)# for i in range(len(delImg)):#     os.remove(delImg[i])del_delImg = delete2("G:\\datasets\\coco\\split\\yes",".jpg",delImg1)desPath = "G:\\datasets\\coco\\final2"myCopyImg(del_delImg,desPath)

在这里插入图片描述

在这里插入图片描述

相关文章:

将切分的图片筛选出有缺陷的

将切分的图片筛选出有缺陷的 需求代码 需求 由于之前切分的图像有一些存在没有缺陷,需要再次筛选 将可视化的图像更改后缀 更改为xml的 可视化代码 可视化后只有7000多个图像 原本的图像有1W多张 代码 # 按照xml文件删除对应的图片 # coding: utf-8 from P…...

el-tooltip内容换行显示

效果图&#xff1a; html: <div class"rules-tooltip flex-center"><el-tooltip class"item" effect"dark" placement"bottom-start"><div slot"content" v-html"tipsContent"></div>&l…...

linux 下用posix semaphore 解决资源竞争问题实例

/* author: hjjdebug date: 2023年 09月 20日 星期三 09:33:58 CST description: 10辆汽车通过承重5辆汽车的桥,处理一个资源争用问题 * 10个线程代表10辆汽车 * 桥上只能承载5辆汽车, 代表最大只能同时有5辆汽车通过 概要: 让10个线程竞争5个资源,用posix 接口, sem…...

RocketMQ —消费者负载均衡

消费者从 Apache RocketMQ 获取消息消费时&#xff0c;通过消费者负载均衡策略&#xff0c;可将主题内的消息分配给指定消费者分组中的多个消费者共同分担&#xff0c;提高消费并发能力和消费者的水平扩展能力。本文介绍 Apache RocketMQ 消费者的负载均衡策略。 背景信息​ …...

Python自动化小技巧23——PDF文件拆分为单独页面(PyMuPDF)

其实编辑PDF用Adobe就行&#xff0c;它功能超级齐全&#xff0c;可是这玩意要收费...去弄免费破解版&#xff0c;找资源又得半天&#xff0c;所以用python来拆分PDF文件吧&#xff0c;可以批量化处理。 至于为什么不用WPS.....别问&#xff0c;问就是不想开会员。 脚本代码 先…...

CISSP学习笔记:通过原则和策略的安全治理

#第一章 通过原则和策略的安全治理 1.1 理解和应用机密性、完整性和可用性的 安全的主要目标&#xff0c;CIA三元组 机密性、完整性和可用性&#xff0c;每条原则的重要性主要取决于组织的安全目标以及安全性所受到的威胁程度 1.1.1 机密性 机密性&#xff1a;限制未授权主…...

【Java 进阶篇】数据定义语言(DDL)详解

数据定义语言&#xff08;DDL&#xff09;是SQL&#xff08;结构化查询语言&#xff09;的一部分&#xff0c;它用于定义、管理和控制数据库的结构和元素。DDL允许数据库管理员、开发人员和其他用户创建、修改和删除数据库对象&#xff0c;如表、索引、视图等。在本文中&#x…...

MySQL详细案例 1:MySQL主从复制与读写分离

文章目录 1. MySQL主从复制1.1 使用场景1.2 MySQL的复制类型1.3 主从复制的作用1.4 主从复制的工作过程1.5 实现MySQL主从复制1.5.1 前置准备1.5.2 主服务器mysql配置1.5.3 从服务器1 mysql配置1.5.4 从服务器2 mysql配置 1.6 MySQL主从复制延时问题的原因和解决办法1.6.1 故障…...

Kafka 常见问题

文章目录 kafka 如何确保消息的可靠性传输Kafka 高性能的体现利用Partition实现并行处理利用PageCache 如何提高 Kafka 性能调整内核参数来优化IO性能减少网络开销批处理数据压缩降低网络负载高效的序列化方式 kafka 如何确保消息的可靠性传输 消费端弄丢了数据 唯一可能导致…...

如何去开展软件测试工作

1. 软件测试 在一般的项目中&#xff0c;一开始均为手动测试&#xff0c;由于自动化测试前期投入较大&#xff0c;一般要软件项目达到一定的规模&#xff0c;更新频次和质量均有一定要求时才会上自动化测试或软件测试。 1.1. 项目中每个成员的测试职责 软件测试从来不是某一…...

详解如何在python中实现简单的app自动化框架

一、app自动化环境搭建 1、安装jdk及配置jdk的环境变量 app底层是c语言&#xff0c;应用层是java&#xff0c;所以需要jdk 2、安装SDK&#xff0c;配置android SDK环境 3、安装模拟器 4、下载安装Appium工具 01、appium客户端 appium destop 服务器 02、命令行安装&#…...

【TCP】三次握手 与 四次挥手 详解

三次握手 与 四次挥手 1. 三次握手2. 四次挥手三次握手和四次挥手的区别 在正常情况下&#xff0c;TCP 要经过三次握手建立连接&#xff0c;四次挥手断开连接 1. 三次握手 服务端状态转化&#xff1a; [CLOSED -> LISTEN] 服务器端调用 listen 后进入 LISTEN 状态&#xff…...

正则表达式新解

文章目录 是什么&#xff1f;正则用法匹配单个字符匹配一组字符其他元字符核心函数 贪婪匹配和非贪婪匹配正则练习 是什么&#xff1f; 正则表达式(Regular Expression)是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊…...

MissionPlanner编译过程

环境 windows 10 mission planner 1.3.80 visual studio 2022 git 2.22.0 下载源码 (已配置git和ssh) 从github上克隆源码 git clone gitgithub.com:ArduPilot/MissionPlanner.git进入根目录 cd MissionPlanner在根目录下的ExtLibs文件下是链接的其它github源码&#xff0…...

SpringBoot 员工管理---通用模板 ---苍穹外卖day2

感谢点击 希望你有所收获! 目录 1.新增员工 需求分析:根据页面原型进行业务分析 接口设计 数据库设计 代码开发 功能测试 如何在接口文档中统一添加JWT令牌 ​ 获取当前登录员工的ID 2.员工分页查询 需求分析 代码开发 如何将日期格式化 ​3.启用禁用员工 1.新…...

可信执行环境(Tee)入门综述

SoK: Hardware-supported Trusted Execution Environments [ArXiv22] 摘要引言贡献 范围系统和威胁模型系统模型威胁模型共存飞地对手无特权软件对手系统软件对手启动对手外围对手结构对手侵入性对手 关于侧信道攻击的一点注记 VERIFIABLE LAUNCH信任根&#xff08;RTM&#xf…...

Java浮点运算为什么不精确

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 1. 什么是 Java 浮点运算? 在 Java 中&#xff0c;浮点运算指的是对浮点数进行加减乘除等基本运算…...

linux使用操作[1]

文章目录 版权声明快捷键ctrl c 强制停止ctrl d 退出、登出history命令光标移动快捷键清屏快捷键 软件安装命令常见linux系统包管理器yum命令apt命令 systemctl命令软连接日期&时区修改linux时区ntp程序 IP地址&主机名ip&主机名域名解析win配置主机名映射虚拟机…...

权限提升Linux篇

提权工具 https://github.com/liamg/traitor https://github.com/AlessandroZ/BeRoot https://github.com/rebootuser/LinEnum https://github.com/mzet-/linux-exploit-suggester https://github.com/sleventyeleven/linuxprivchecker https://github.com/jondonas/linux…...

影刀自动化采集底层逻辑

hello,大家好&#xff0c;这里是【玩数据的诡途】 接上回 <我的影刀故事> 今天给大家介绍一下整个采集的底层逻辑&#xff0c;包括业务流程自动化也是基于这一套基础逻辑进行展开的&#xff0c;顺便带大家熟悉一下影刀&#xff0c;既然叫影刀系列了&#xff0c;那后续一些…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...