前回記事、重複画像(類似画像)を整理するスクリプトを作成しました、のソースの説明です。
構成
下記のようなソースフォルダ構成になっています。
DupPhotoCheck
│
├─Common
│ │ Common.py
│ └─WindowsIf.py
│
└─Photo
│ DupPhotoCheck.bat
│ DupPhotoCheck.py
└─PhotoCommon.py
Commonは、当ツールでも利用されるような、共通ソースになります。
WindowsIf.pyは、当ツールではショートカット作成に使われています。
DupPhotoCheck.batは、バッチ処理する場合に使いますが、DupPhotoCheck.pyを直接実行するなら不要です。
PhotoCommon.pyは、画像に関する共通処理が含まれます。 画像の類似判定等を実装しています。
DupPhotoCheck.pyが、メインのファイルになります、下記が処理概要です。
DupPhotoCheck.py概要
s_dir_base 出力先フォルダ
s_remain_priors 重複時、優先的に残すファイル名(正規表現)
メイン関数は下記のようになっています。
def DupPhotoCheck():
SetWorkDir()
dict_simi = CheckSimilarFiles()
dict_same = CheckSameFiles(dict_simi)
ProcessSameFileGroups(dict_same)
print(‘ – End(DupPhotoCheck)’)
SetWorkDir
s_dir_baseで指定したフォルダを作成して準備
CheckSimilarFiles
PhotoCommon.GetAverageHashで、AverageHashによる類似画像検索を簡単に行い、戻り値にマッチしたファイルを格納。 ※AverageHashについては、こちらを参照
CheckSameFiles
PhotoCommon.GetTotalHashで、その他のアルゴリズム含めて類似画像判定を行い、内容が同じ、あるいは、限りなく近いものを、戻り値に格納。
ProcessSameFileGroups
重複画像について、1つを元のフォルダに残して、それ以外を、s_dir_baseの出力フォルダへ移動、残す画像へのショートカットを作成
という処理になっています。
ソースはGitHubにUPしています。
コメント
[…] 次の記事では、ソースコードの内容を簡単に説明します。 […]
[…] 重複画像を整理するスクリプト […]