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

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

  • 需求
  • 代码

需求

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

将可视化的图像更改后缀
在这里插入图片描述
更改为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)

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【Linux】【网络】传输层协议:UDP

文章目录 UDP 协议1. 面向数据报2. UDP 协议端格式3. UDP 的封装和解包4. UDP 的缓冲区 UDP 协议 UDP传输的过程类似于寄信。 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。不可靠:没有确认机制,没有重传机制&am…

一分钟用手机搞定视频提取伴奏

上台表演需要去掉人声,提取伴奏,这个操作可以直接使用【音分轨】软件中的【视频提取伴奏】功能,接下来教大家具体的操作流程! 第一步:在首页点击【人声分离】,上传需要分离的视频,有三种方式可以…

「大数据-2.0」安装Hadoop和部署HDFS集群

目录 一、下载Hadoop安装包 二、安装Hadoop 0. 安装Hadoop前的必要准备 1. 以root用户登录主节点虚拟机 2. 上传Hadoop安装包到主节点 3. 解压缩安装包到/export/server/目录中 4. 构建软链接 三、部署HDFS集群 0. 集群部署规划 1. 进入hadoop安装包内 2 进入etc目录下的hadoop…

Windows AD域使用Linux Samba

Windows AD域使用Linux Samba 1. 初始化配置 1.1 初始化配置 配置服务器名 hostnamectl set-hostname samba.sh.pana.cnhosts文件配置,确保正常解析到本机和域控 [rootcentos7 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.loc…

crypto:RSA

题目 利用代码跑一下解码 import gmpy2 e 17 p 473398607161 q 4511491 d gmpy2.invert(e,(p-1)*(q-1)) print(d)总结 RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,常用于数据加密和数字签名。它基于两个大素数的乘积难以分解的数…

RocketMQ —消费者负载均衡

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

如何去开展软件测试工作

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

用CRM系统转化潜在客户

CRM销售管理就是通过CRM销售管理系统管理相关的销售阶段,从而转化潜在客户,完成相应的交易指标以及成交率,从而吸引到更多的潜在客户。那么,CRM系统如何转化潜在客户? 潜在客户是CRM客户管理的基本,需要不…

基于遗传算法解决的多仓库多旅行推销员问题(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux部署elk日志监控系统

目录 一、简介 二、部署elasticsearch 2.1 安装jdk11(jdk版本>11) 2.2 下载安装包 2.3 授权elk用户 2.4 配置elasticsearch.yml 2.5 启动elasticsearch 三、部署logstash 3.1 启动测试 3.2 可能出现的报错 3.3 指定配置文件启动logstash 3.4 安装El…

【网络安全】网络攻击的类型有哪些?

对网络的攻击大致可以分为两类:服务供给和非服务攻击。从攻击的手段可以分为8类:系统入侵类攻击、缓冲区溢出类攻击、欺骗类攻击、拒绝服务类攻击、防火墙攻击、病毒类攻击、木马类攻击与后门攻击。 服务类攻击(Application Dependent Attrac…

正点原子lwIP学习笔记——NETCONN接口简介

1. NETCONN接口简介 NETCONN API 使用了操作系统的 IPC 机制, 对网络连接进行了抽象,使用同一的接口完成UDP和TCP连接。 NETCONN API接口是在RAW接口基础上延申出来的一套API接口 首先会调用netconn_new创建一个pcb控制块,其实际是一个宏定…

全链路压测:优化系统性能的关键措施

在现代互联网时代,系统的性能稳定性和可靠性对于企业的成功至关重要。全链路压测作为一项关键的测试措施,可以模拟真实的负载情况,全面评估系统在高负载环境下的表现。本文将介绍全链路压测的定义、作用以及在优化系统性能方面的重要性。 一、…

PowerDsigner 数据库逆向pdm数模 常见数据库连接问题

本文章记录本人在使用powerdsigner工具,反向工程生成项目数据库表结构以及表关系的过程中遇到的两个常见问题。 问题1:Could not Initialize JavaVM 问题2:Non SQL Error : Could not load class oracle.jdbc.OracleDriver 环境&#xff1…

Docker-如何获取docker官网x86、ARM、AMD等不同架构下的镜像资源

文章目录 一、概要二、资源准备三、环境准备1、环境安装2、服务器设置代理3、注册docker账号4、配置docker源 四、查找资源1、服务器设置代理2、配置拉取账号3、查找对应的镜像4、查找不同版本镜像拉取 小结 一、概要 开发过程中经常会使用到一些开源的资源,比如经…

界面组件DevExpress WPF v23.2新功能预览 - 更轻量级的主题

本文主要描述了DevExpress WPF即将在几个月之后发布的v23.2中包含的新功能,持续关注我们获取更多最新资讯哦~ P.S:DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强…

自己开发一个VSCode插件,快速生成Flex布局代码

插件CSS Flex 安装地址:VSCode插件安装 GitHub:https://github.com/xutao-o/css-flex-code 💡介绍 这是一个快捷生成CSS Flex布局代码的VS Code插件,类似于Google开发者控制台里的Flex布局工具,就是看谷歌的布局工具…

爬虫获取一个网站内所有子页面的内容

上一篇介绍了如何爬取一个页面内的所有指定内容,本篇讲的是爬去这个网站下所有子页面的所有指定的内容。 可能有人会说需要的内容复制粘贴,或者直接f12获取需要的文件下载地址一个一个下载就行了,但是如下图十几个一级几十个二级一百多个疾病…

【Spring Cloud】认识微服务架构,拆分简单的 Demo 实现服务的远程调用

文章目录 前言一、认识微服务1.1 服务架构的演变:从单体到微服务单体架构分布式架构微服务架构 1.2 微服务技术的对比:Dubbo、Spring Cloud、Spring Cloud Alibaba技术对比公司需求的选择 1.3 Spring Cloud:微服务框架的精华什么是 Spring Cl…

工具篇 | WSL使用入门教程以及基于WSL和natApp内网穿透实践 - 对比VMWare

介绍 在开发工具中,Windows Subsystem for Linux (WSL) 和 VMWare 它们都可以实现了在 Windows 上运行 Linux系统。 文章概览 WSL Vs VMWare 我们将简单比对 WSL 和 VMWare,在性能、资源消耗等方面的差异,以协助您做出更加明确的选择。 …