ホームページ  >  記事  >  バックエンド開発  >  Python を使用してマトリョーシカ スタイルのフォルダーをバッチ処理する方法

Python を使用してマトリョーシカ スタイルのフォルダーをバッチ処理する方法

coldplay.xixi
coldplay.xixi転載
2020-08-24 17:14:482350ブラウズ

Python を使用してマトリョーシカ スタイルのフォルダーをバッチ処理する方法

#[関連する学習の推奨事項:

Python チュートリアル]

序文

プロジェクトチームのトレーニング画像を前処理していたところ、処理済みの画像がカテゴリーごとに分けられ、フォルダー内のフォルダーに入れ子人形形式で保存されていたことが判明したので、バッチ処理して元のフォルダールールに従って処理しました

しかし、以下の機能を組み合わせることで、一連の前処理を無事完了することができました。

#1. 飽きのこない Zhishan ライブラリを使用する

##1. ライブラリをインストールする

pip インストール:

pip install zisan

2.getFiles function

関数呼び出し:

import zisan.FileTools as zf
file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
whole_file = zf.getFiles(file_path)

画像の保存場所: フォルダー 2016 ->フォルダーの注釈 -> ;サブフォルダー -> 00000.png

getFiles 関数を使用すると、注釈内のすべてのフォルダー内のすべての画像パスを呼び出すことができます


つまり、getFiles 関数は、すべての画像パスを呼び出します。途中にサブフォルダーがあるかどうかに関係なく、ファイル パス

#2.その他の関数

1.os.listdir function

#この関数を呼び出すと、パスの下にあるフォルダーの名前が返されます。このフォルダーの名前は文字列の形式でリストに保存されます。##コードは次のとおりです。

import os
file_path = 'C:/Users/xxx/Desktop/2016/Annotations'
file_names = os.listdir(file_path)
print(file_names)

効果:



2.os.mkdir 関数

コード:

import os
new_file_path = 'C:/Users/xxx/Destop/2016/newfile'
os.mkdir(new_file_path)
新しいフォルダーの作成に使用されます

3. アプリケーション

要件: Annotations フォルダー内の各サブファイルを処理し、元のルールに従って新しいファイル フォルダーの対応する場所に保存します。命名規則は、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
などです。これが私の基本です。フォルダ処理の問題を解決するためのアイデアとプロセス 各機能を組み合わせて使用​​したり、ループの外側または内側に配置したりすることで、特定の要件に応じてさまざまな効果を得ることができます。

以上がPython を使用してマトリョーシカ スタイルのフォルダーをバッチ処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。