iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python如何批量检查图像是否可用
  • 195
分享到

详解Python如何批量检查图像是否可用

2024-04-02 19:04:59 195人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

数据集中的图像,一般不可用在以下3个方面: 1.图像过小 2.无法打开 3.“Premature end of JPEG file” 这些图像可能会导致模型的

数据集中的图像,一般不可用在以下3个方面:

1.图像过小

2.无法打开

3.“Premature end of JPEG file”

这些图像可能会导致模型的学习异常,因此,使用多进程检查数据集中的每张图像,是很有必要的。

具体逻辑如下:

  • 遍历文件夹,多进程处理每一张图像
  • 判断图像是否可读,是否支持resize尺寸,边长是否满足
  • 判断JPG图像是否Premature end
  • 删除错误图像

脚本如下:

#!/usr/bin/env python
# -- coding: utf-8 --
"""
Copyright (c) 2020. All rights reserved.
Created by C. L. Wang on 10.11.20
"""

import argparse
import os
from multiprocessing import Pool

import cv2


def traverse_dir_files(root_dir, ext=None):
    """
    列出文件夹中的文件, 深度遍历
    :param root_dir: 根目录
    :param ext: 后缀名
    :return: [文件路径列表, 文件名称列表]
    """
    names_list = []
    paths_list = []
    for parent, _, fileNames in os.walk(root_dir):
        for name in fileNames:
            if name.startswith('.'):  # 去除隐藏文件
                continue
            if ext:  # 根据后缀名搜索
                if name.endswith(tuple(ext)):
                    names_list.append(name)
                    paths_list.append(os.path.join(parent, name))
            else:
                names_list.append(name)
                paths_list.append(os.path.join(parent, name))
    return paths_list, names_list


def check_img(path, size):
    """
    检查图像
    """
    is_Good = True
    try:
        img_bgr = cv2.imread(path)
        h, w, _ = img_bgr.shape
        if h < size or w < size:
            is_good = False
        _ = cv2.resize(img_bgr, (size, size))
    except Exception as e:
        is_good = False

    if path.endswith("jpg"):
        with open(path, 'rb') as f:
            check_chars = f.read()[-2:]
        if check_chars != b'\xff\xd9':
            print('[Info] Not complete jpg image')
            is_good = False

    if not is_good:
        print('[Info] error path: {}'.fORMat(path))
        os.remove(path)


def check_error(img_dir, n_prc, size):
    """
    检查错误图像的数量
    """
    print('[Info] 处理文件夹路径: {}'.format(img_dir))
    paths_list, names_list = traverse_dir_files(img_dir)
    print('[Info] 数据总量: {}'.format(len(paths_list)))

    pool = Pool(processes=n_prc)  # 多线程下载
    for idx, path in enumerate(paths_list):
        pool.apply_async(check_img, (path, size))
        if (idx+1) % 1000 == 0:
            print('[Info] idx: {}'.format(idx+1))

    pool.close()
    pool.join()

    print('[Info] 数据处理完成: {}'.format(img_dir))


def parse_args():
    """
    处理脚本参数,支持相对路径
    :return: in_folder 输入文件夹, size 尺寸, n_prc 进程数
    """
    parser = argparse.ArgumentParser(description='检查图片脚本')
    parser.add_argument('-i', dest='in_folder', required=True, help='输入文件夹', type=str)
    parser.add_argument('-p', dest='n_prc', required=False, default=100, help='进程数', type=str)
    parser.add_argument('-s', dest='size', required=False, default=50, help='最小边长', type=str)
    args = parser.parse_args()

    in_folder = args.in_folder
    size = int(args.size)
    n_prc = int(args.n_prc)
    print("[Info] 文件路径:{}".format(in_folder))
    print("[Info] 进程数: {}".format(n_prc))
    print("[Info] 边长: {}".format(size))

    return in_folder, n_prc, size


def main():
    arg_in, n_prc, size = parse_args()
    check_error(arg_in, n_prc, size)


if __name__ == '__main__':
    main()

到此这篇关于详解Python如何批量检查图像是否可用的文章就介绍到这了,更多相关Python检查图像内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Python如何批量检查图像是否可用

本文链接: https://www.lsjlt.com/news/118616.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Python如何批量检查图像是否可用
    数据集中的图像,一般不可用在以下3个方面: 1.图像过小 2.无法打开 3.“Premature end of JPEG file” 这些图像可能会导致模型的...
    99+
    2024-04-02
  • Python怎么批量检查图像是否可用
    本篇内容主要讲解“Python怎么批量检查图像是否可用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么批量检查图像是否可用”吧!数据集中的图像,一般不可用在以下3个方面:图像过小无...
    99+
    2023-07-02
  • jQuery如何检查图像是否加载
    小编给大家分享一下jQuery如何检查图像是否加载,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!检查图像是否加载有时为了继续脚本...
    99+
    2024-04-02
  • jQuery如何检查是否可见?
    这篇文章将为大家详细讲解有关jQuery如何检查是否可见?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery 检查可见性 jQuery 提供了多种方法来检查元素是否可见,这些方法涵盖了从基本可见性...
    99+
    2024-04-02
  • jQuery如何检查元素是否可见?
    ...
    99+
    2024-04-02
  • jquery如何检查图片是否存在
    这篇文章主要介绍“jquery如何检查图片是否存在”,在日常操作中,相信很多人在jquery如何检查图片是否存在问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery如何检查图片是否存在”的疑惑有所帮助!...
    99+
    2023-07-05
  • 如何检查python是否安装成功
    可以通过在命令行中输入以下命令来检查Python是否安装成功: 检查Python版本:输入 `python --version`...
    99+
    2023-10-27
    python
  • python如何检查序列是否为空
    小编给大家分享一下网站建设需要多少钱?,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!检查序列是否为空只有序列不为空时,列表、元组等操作才行得通,因此需要在操作之前...
    99+
    2023-06-27
  • PyTorch 如何检查模型梯度是否可导
    一、PyTorch 检查模型梯度是否可导 当我们构建复杂网络模型或在模型中加入复杂操作时,可能会需要验证该模型或操作是否可导,即模型是否能够优化,在PyTorch框架下,我们可以使用...
    99+
    2024-04-02
  • python中如何查看cuda是否可用
    python中查看cuda是否可用的方法:1、找到python程序;2、打开idle工具;3、在idle中新建一个shell脚本;4、输入“import torch”指令导入torch模块;5、通过“print(torch.cuda.is_...
    99+
    2024-04-02
  • python如何检查容器是否为空
    这篇文章主要介绍了python如何检查容器是否为空,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。检查容器是否为空容器是指可以存储其他数据的那些容器数据类型。一些经常使用的内置...
    99+
    2023-06-27
  • 一文详解如何使用Python批量拼接图片
    目录前言〇、准备工作,PIL库安装使用pip安装一、简单程序实现二、更复杂情况总结前言 当需要将多张图像拼接成一张更大的图像时,通常会用到图片拼接技术。这种技术在许多领域中都有广泛的...
    99+
    2023-05-19
    python多图拼接 python拼接图片 python图片拼图
  • jQuery如何检查图片是否加载完成
    这篇文章主要介绍了jQuery如何检查图片是否加载完成,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。检查图片是否加载完成有时候你需要确保图片...
    99+
    2024-04-02
  • 如何使用python对图片进行批量压缩详解
    目录前言使用Python和Pillow模块压缩图片1、优化flag2、渐进式JPEG3、JPEG动态质量使用Python和Selenium模块操纵Squoosh批量压缩图片Pytho...
    99+
    2024-04-02
  • 如何检测http代理ip是否可用
    这篇文章主要介绍如何检测http代理ip是否可用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、测试数量为了测试,样品不能太小。如果只有十几次测试,就不能轻易得出结论。像太阳IP就提供5000IP供测试,足够用户了...
    99+
    2023-06-20
  • 如何编写定时检查网站是否掉线的批处理
    本篇内容主要讲解“如何编写定时检查网站是否掉线的批处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写定时检查网站是否掉线的批处理”吧!下面是写的批处理checktoreboot.bat,...
    99+
    2023-06-09
  • 如何用Javascript检查对象是否为空
    这篇文章主要讲解了“如何用Javascript检查对象是否为空”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用Javascript检查对象是否为空”吧!...
    99+
    2024-04-02
  • 如何用javascript检测变量是否存在
    这篇文章主要讲解了“如何用javascript检测变量是否存在”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用javascript检测变量是否存在”吧!...
    99+
    2024-04-02
  • 如何使用Shell检查进程是否存在
    本篇内容主要讲解“如何使用Shell检查进程是否存在”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Shell检查进程是否存在”吧!在运维工作中,为保证业务的正常运行,我们需要定时查看指定...
    99+
    2023-06-05
  • Win10系统如何完成检查是否有可用更新并安装
      Win10预览版发布时间不是很久,用户体验上还存在一些体兼容性问题,这时候需要通过Windows更新来获取安装解决问题,那么Win10系统下如何完成检查是否有可用更新并安装呢?   Win10系统设置检查更新并获取安...
    99+
    2023-06-09
    Win10 检查更新 系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作