Comment traiter par lots des dossiers de style matriochka via Python

coldplay.xixi
Libérer: 2020-08-24 17:14:48
avant
2356 Les gens l'ont consulté

Comment traiter par lots des dossiers de style matriochka via Python

[Recommandations d'apprentissage associées : Tutoriel Python]

Avant-propos

Lorsque je prétraitais certaines images de formation de l'équipe de projet, j'ai découvert que les images traitées étaient divisées en catégories et stockées dans des dossiers comme des poupées matriochka, je les ai donc traitées par lots et traitées selon les règles d'origine des dossiers. stocké, cela causera beaucoup de problèmes
Mais grâce à la combinaison des fonctions suivantes, cela m'a aidé à réussir une série de prétraitements.

1. Utilisez la bibliothèque Zhishan facile à utiliser

1. Installez la bibliothèque

Installation pip :

pip install zisan
Copier après la connexion

Fonction 2.getFiles

Appel de fonction :

import zisan.FileTools as zf
file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
whole_file = zf.getFiles(file_path)
Copier après la connexion

Les images sont stockées dans : Dossier 2016 -> -> ;Sous-dossier-> 00000.png
Grâce à la fonction getFiles, vous pouvez appeler tous les chemins d'image dans tous les dossiers dans Annotations

En d'autres termes, la fonction getFiles appellera tous les chemins de fichiers , qu'il y ait ou non des sous-dossiers au milieu

2. Autres fonctions

Fonction 1.os.listdir

Une fois cette fonction appelée, elle renverra le nom du dossier sous le chemin, qui est stocké dans la liste sous la forme d'une chaîne

Le code est le suivant :

import os
file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
file_names = os.listdir(file_path)
print(file_names)
Copier après la connexion

Effet :


Fonction 2.os.mkdir

Code :

import os
new_file_path = 'C:/Users/xxx/Destop/2016/newfile'
os.mkdir(new_file_path)
Copier après la connexion

est utilisé pour créer de nouveaux dossiers

3. Utiliser

Exigences : Processus chaque sous-fichier dans le dossier Annotations et stockez-les à l'emplacement correspondant dans le nouveau dossier de fichiers selon les règles d'origine. Les règles de dénomination sont telles que 00000.jpg

import zisan.FileTools as zf
import os
import cv2
from skimage import io

file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
new_file_path = 'C:/Users/xxx/Destop/2016/newfile'

file_names = os.listdir(file_path)
#获取Annotations文件夹的子文件夹名称

for i in file_names: #遍历每个子文件夹名称
  Index = 0
  file_name = file_path + '/' + i #巧妙运用+号得到改子文件夹的路径
  os.mkdir(new_file_path + '/' + i) #在newfile里创建一个与子文件夹名称相同的文件夹
  whole_pic = zf.getFiles(file_name) #用getFiles函数读取子文件夹内的图片路径
  for f in whole_pic:
    msk = io.imread(f)
		msk=cv2.cvtColor(msk,cv2.COLOR_RGBA2GRAY)
    msk[np.where(msk!=0)]=255
    io.imsave(new_file_path + '/' + i + '/' + str("%05d" % Index) + '.jpg' , msk)
     #处理命名可直接+'.jpg'让其以jepg形式存储
    Index += 1
Copier après la connexion

C'est mon idée de base et. processus pour résoudre le problème du traitement des dossiers. Chaque fonction peut être utilisée en combinaison et placée à l'extérieur ou à l'intérieur de la boucle pour avoir des effets différents selon des exigences spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!