【Python】ディレクトリ内の全ての画像の解像度を調べる

 

Pythonで画像処理のコードを書いているとディレクトリ内にある全ての画像の解像度を調べたくなる時があります。

一枚や二枚であれば、右クリックで見ればわかりますが、数千枚、数万枚だと数が多くて調べきれません。

そこで、ディレクトリを指定しその中の全ての画像の解像度を取得するコードを書いてみました。

 

コード

 

 

出力は以下の通り。

 

 

見方は、{横サイズ、縦サイズ、チャンネル数 : 枚数}です。ディレクトリ内には4枚の画像が入っていました。

チャンネル数は、カラー画像であればRGB3色で3、グレースケールであれば1です。

 

ちなみに、ディレクトリ内に画像ファイル以外が含まれているとエラーが出ます。

 

解像度の取得方法

 

ここからは、コードの解説をしていきます。

 

  1. imreadで画像を読み込みます。画像データはnumpyのndarray(n次元配列)として読まれます。
  2. カラー画像の場合、img.shapeで(横サイズ、縦サイズ、チャンネル数)が取得できます。
  3. グレー画像の場合、img.shapeで(横サイズ、縦サイズ)を取得します。チャンネル数は1と設定します。

 

 

globを使ってディレクトリ内のファイル名を全て取得

 

解像度が取得できたので、次はディレクトリ内の全ファイルパスを取得するコードを書きます。

ディレクトリの中の全ファイルパスを取得するのに、globを使っています。

主な流れは以下の通り。

  1. globで全ファイルパスを取得
  2. for文で画像一枚一枚に対して、解像度やチャンネル情報(info)を取得
  3. infoを辞書のキーとして、同じキーが出現したらカウントを増やす

 

 

おわり。