香香的数据库 2024-07-24 19:42 采纳率: 20%
浏览 5

pycharm挑出一组文件夹重复的图片为什么一直报错呢

pycharm挑出一组文件夹重复的图片为什么一直报错呢,怎么都不对

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-07-24 19:42
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    从您提供的信息来看,您在使用 PyCharm 尝试找出一组文件夹中重复的图片时遇到了问题。这里,我可以提供一个基于 Python 的示例代码,使用哈希算法来识别重复的图片。这个示例代码使用了 Python 的 Pillow 库来处理图片,并使用 hashlib 来计算哈希值。

    首先,请确保您已经安装了 Pillow 库,如果没有安装,可以通过以下命令安装:

    pip install Pillow
    

    以下是一个简单的 Python 脚本,用于找出指定文件夹中重复的图片:

    import os
    from PIL import Image
    import hashlib
    
    def get_image_hash(image_path):
        """计算图片的哈希值"""
        with Image.open(image_path) as img:
            # 转换图片为灰度,减少计算量
            img = img.convert('L')
            # 重新定义图片大小为小尺寸,进一步减少计算量
            img = img.resize((64, 64))
            # 将图片转换为字节流
            byte_arr = img.tobytes()
            # 计算MD5哈希值
            return hashlib.md5(byte_arr).hexdigest()
    
    def find_duplicates(folder_path):
        """找出文件夹中重复的图片"""
        image_hashes = {}
        duplicates = []
    
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                if file.lower().endswith(('.png', '.jpg', '.jpeg')):
                    file_path = os.path.join(root, file)
                    image_hash = get_image_hash(file_path)
                    if image_hash in image_hashes:
                        duplicates.append((file_path, image_hashes[image_hash]))
                    else:
                        image_hashes[image_hash] = file_path
    
        return duplicates
    
    # 指定要搜索的文件夹路径
    folder_path = 'path_to_your_folder'
    duplicates = find_duplicates(folder_path)
    
    # 打印重复的图片路径
    for dup in duplicates:
        print(f"Duplicate found: {dup}")
    

    请注意以下几点:

    • 这个脚本会将所有图片转换为灰度,并调整为 64x64 像素大小,以减少计算量和提高识别重复图片的准确性。
    • 哈希算法对图片的微小变化可能非常敏感,因此即使图片内容非常相似,如果它们不是完全相同,哈希值也可能不同。
    • 您需要将 'path_to_your_folder' 替换为您实际要检查的文件夹路径。

    如果您在 PyCharm 中运行这个脚本时遇到错误,请提供具体的错误信息,这样我可以进一步帮助您解决问题。如果错误与代码无关,可能需要检查您的 PyCharm 配置或 Python 环境设置。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月24日