You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编程找出视觉一致但属性不同的缺失Canvas Object图片

找出Folder A中Folder B缺失的视觉匹配图片

核心思路

因为两个文件夹的图片视觉一致但文件名、尺寸、画质均不同,无法通过属性比对,只能基于图像视觉内容的特征匹配定位缺失图片。最实用的方案是用感知哈希算法(Perceptual Hash),它能将图片转化为一串短哈希值,视觉相似的图片哈希值差异极小,可忽略尺寸、画质的细微差别。

具体实现步骤(Python示例)

  1. 安装依赖库:需要imagehash和Pillow处理图片并计算哈希
pip install imagehash pillow
  1. 编写脚本实现比对:
import os
import imagehash
from PIL import Image

def get_image_hash(img_path):
    """计算图片的感知哈希值(dHash)"""
    try:
        with Image.open(img_path) as img:
            # 转灰度图后计算dHash,对位移、尺寸变化鲁棒性更强
            return imagehash.dhash(img)
    except Exception as e:
        print(f"处理图片失败 {img_path}: {e}")
        return None

def find_missing_image(folder_a, folder_b):
    # 建立Folder B的哈希集合
    b_hashes = set()
    for filename in os.listdir(folder_b):
        file_path = os.path.join(folder_b, filename)
        if os.path.isfile(file_path) and filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
            img_hash = get_image_hash(file_path)
            if img_hash:
                b_hashes.add(img_hash)
    
    # 遍历Folder A,查找不在B中的图片
    missing_images = []
    for filename in os.listdir(folder_a):
        file_path = os.path.join(folder_a, filename)
        if os.path.isfile(file_path) and filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
            img_hash = get_image_hash(file_path)
            if img_hash:
                # 通过汉明距离校验,避免哈希冲突
                is_missing = True
                for b_hash in b_hashes:
                    if img_hash - b_hash < 3:
                        is_missing = False
                        break
                if is_missing:
                    missing_images.append(file_path)
    
    return missing_images

# 替换为你的实际文件夹路径
folder_a = "/path/to/Folder A"
folder_b = "/path/to/Folder B"

missing = find_missing_image(folder_a, folder_b)
if missing:
    print("Folder B缺失的图片:")
    for img in missing:
        print(img)
else:
    print("Folder A中没有Folder B缺失的图片")

关键说明

  • 哈希算法选择:dHash(差异哈希)比pHash更适合处理尺寸变化的图片,计算速度也更快。
  • 汉明距离阈值:设置为3是因为画质压缩、尺寸缩放可能导致哈希值微小差异,阈值可根据实际情况在1-5之间调整。
  • 格式兼容:脚本支持常见图片格式,若有其他格式可自行添加到后缀判断中。

内容的提问来源于stack exchange,提问作者ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:00:00