比较两个文件夹图像相似度

本文介绍如何利用Python进行图像处理,通过比较两个文件夹内图像的特征来评估它们之间的相似度,涉及图像预处理、特征提取及相似度计算等技术。
摘要由CSDN通过智能技术生成
github地址:https://github.com/beeftornado/duplicate-image-finder
#!/usr/bin/env python

import sys,os
sys.path.append("..")
current_dir = os.path.abspath(os.path.dirname(__file__))
sys.path.append(current_dir + "/../duplicateimagefinder")
sys.path.append(current_dir + "/../src/utils")
import argparse
from functools import partial
from multiprocessing import Pool, cpu_count
import time

from blitzdb import FileBackend, Document
from PIL import Image
from tqdm import *
import numpy as np
from __init__ import *
from enums import *
from output_formats import outputter_for_format
from output_formats.base import OutputRecord
from
好的,这个问题可以使用OpenCV库和pytesseract库来解决,我们可以使用OpenCV库对图片进行预处理,然后使用pytesseract库进行文字识别。 首先,我们需要安装OpenCV和pytesseract库。可以使用pip命令安装。 ```python !pip install opencv-python-headless !pip install pytesseract ``` 接下来,我们可以编写一个函数来对图片进行预处理。在这个函数,我们首先使用OpenCV库读取图片,然后将图片转换为灰度图像,进行二值化处理,使得文字更加清晰易读。 ```python import cv2 # 图片预处理 def preprocess(image_path): img = cv2.imread(image_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) _, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) return thresh ``` 然后,我们可以使用pytesseract库对预处理后的图片进行文字识别。和之前一样,我们可以编写一个函数来遍历文件夹的所有图片,并对它们进行文字识别。 ```python import os # 文字识别 def ocr(image_path): img = preprocess(image_path) text = pytesseract.image_to_string(img, lang='chi_sim') return text # 遍历文件夹的所有图片 def process_folder(folder_path): images = os.listdir(folder_path) texts = [] for image in images: image_path = os.path.join(folder_path, image) text = ocr(image_path) texts.append(text) return texts ``` 现在,我们可以遍历第一个和第二个文件夹的所有图片,并找到相似度为80%的图片。然后将它们放入第三个文件夹并按照第二个文件夹图片顺序进行排列。 ```python import os from shutil import copyfile # 处理第一个和第二个文件夹 texts1 = process_folder('folder1') texts2 = process_folder('folder2') for i, text1 in enumerate(texts1): for j, text2 in enumerate(texts2): if similarity(text1, text2) >= 0.8: image_path = os.path.join('folder1', f'image_{i+1}.jpg') new_image_path = os.path.join('folder3', f'image_{j+1}.jpg') copyfile(image_path, new_image_path) ``` 最后,我们就可以得到一个新的文件夹folder3,其包含了第一个文件夹与第二个文件夹相似度为80%的图片,并按照第二个文件夹图片顺序进行排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值