Python-画像はファイルサイズに従って再度読み込まれます

ファイルサイズに応じて読み取るPython画像

最近、画像処理を行ってい
ましたが、画像分割したところ同じものが多い
のですが、python os.walk()が返すファイルリストの順番が異なり
ます。精度は非常に高いですが、効率は特に低くなります。
その後、フォルダー内の画像がサイズで並べ替えられ、類似した画像が隣接する
ため、隣接する画像を比較している限り移動できます(1と2の比較、3と4の比較など)。すべてを横断する必要はありません。100%正確ではありませんが、速度が大幅に向上しています。嬉しいです!以前に6千枚の写真すべてをたどって、1日走りました...

付属コード

import os
import cv2
from skimage.measure import compare_ssim
import shutil
import random


def delete(filename1):
    os.remove(filename1)


def move(filename1,filename2):
     shutil.move(filename1,filename2)


if __name__ == '__main__':
    path = r'C:\Users\lenovo\Desktop\image_all\0'
    save_path_img = r'C:\Users\lenovo\Desktop\image_all\delete1'
    os.makedirs(save_path_img, exist_ok=True)
    fileMap = {}
    size = 0
    # 遍历filePath下的文件、文件夹(包括子目录)
    for parent, dirnames, filenames in os.walk(path):
        #for dirname in dirnames:
            # print('parent is %s, dirname is %s' % (parent, dirname))
        for filename in filenames:
            # print('parent is %s, filename is %s' % (parent, filename))
            # print('the full name of the file is %s' % os.path.join(parent, filename))
            size = os.path.getsize(os.path.join(parent, filename))
            fileMap.setdefault(os.path.join(parent, filename), size)
    filelist = sorted(fileMap.items(), key=lambda d: d[1], reverse=False)
    img_files= []
    for filename, size in filelist:
        img_files.append(filename)
        # print("filename is %s , and size is %d" % (filename, size))
    imgs_n = []
    num = []
    print(img_files)
    for currIndex, filename in enumerate(img_files):
        img = cv2.imread(img_files[currIndex])
        img1 = cv2.imread(img_files[currIndex + 1])
        ssim = compare_ssim(img, img1, multichannel=True)
        if ssim > 0.9:
            imgs_n.append(img_files[currIndex + 1])
            print(img_files[currIndex], img_files[currIndex + 1], ssim)
        else:
            print('small_ssim',img_files[currIndex], img_files[currIndex + 1], ssim)
        currIndex += 1
        if currIndex >= len(img_files)-1:
            break
    for image in imgs_n:
        move(image, save_path_img)
        # delete(image)

コードセクションでは、いくつかのブログへの参照を持っているが、どこ作者を参照するには知らない私を許してください、私はそれが参照リンク囲み、私のプライベートの手紙見ることができ
姫がCSDNこれが私の最初のポストちょっとで落ち着く喜
このリンクします。https://blog.csdnを.net / weixin_42385606 /記事/詳細/ 104718533

オリジナルの記事を3件公開 Likes0 Visits 123

おすすめ

転載: blog.csdn.net/weixin_42385606/article/details/104718533