当前位置: 首页 > article >正文

图像筛选去重、去静止

主要使用 structural_similarity 算法判断两张图片的相似度。代码如下:

import numpy as np
from skimage.metrics import structural_similarity as ssim
import cv2 as cv
import os
import shutil
import sys
def compare_ssim(img1, img2):
    # 确保img1和img2是灰度图,如果不是,需要先转换
    if img1.ndim == 3:
        img1 = img1.mean(axis=2)
    if img2.ndim == 3:
        img2 = img2.mean(axis=2)
    (score, diff) = ssim(img1, img2, full=True)
    return score, diff

# 假设 img1 和 img2 是两个 ndarray 图片
# score, diff = compare_ssim(img1, img2)
# print(f"SSIM: {score}, Diff: {diff}")

def extract_number(s):
    return int(''.join(filter(str.isdigit, s)))
# 步骤 3: 使用 sorted() 函数进行排序
#sorted_list = sorted(string_list, key=extract_number)

if __name__ == "__main__":
    # 原始目录 和 抽取保存目录
    img_folder = sys.argv[1]
    save_folder = sys.argv[2]
    os.makedirs(save_folder,exist_ok=True)
    img_list = os.listdir(img_folder)
    img_list.sort(key=extract_number)
    #print(img_list)
    SIZE = 64 #将图像缩放大小
    for id, imgname in enumerate(img_list):
        imgpath = os.path.join(img_folder, imgname)
        img= cv.resize(cv.imread(imgpath,cv.IMREAD_GRAYSCALE),(SIZE, SIZE))
        if id==0:
            base_img = img.copy()
            continue
        else:
            score, diff = compare_ssim(base_img, img)
            judge = np.where(diff < 0.3, 0, 1)  # 大于0.3 认为是相同的块
            ss = judge.sum() / (SIZE * SIZE)
            if ss < 0.4: # 相同块比例低于0.4 才认为图片不相似
                shutil.copy(imgpath, save_folder)
                base_img = img.copy()
                print("copy : {}".format(imgpath))
            else:
                continue


http://www.kler.cn/news/362628.html

相关文章:

  • 【Vue.js 3.0】Vue.js 中使用 Component 动态组件
  • 长短期记忆网络(Long Short-Term Memory,LSTM)
  • 爬虫基础--requests模块
  • FloodFill 算法(DFS)
  • 软件质量管理体系,软件评审资料,资质认证资料,安全建设,数据安全及项目管理全套资料(原件参考)
  • Web前端高级工程师培训:使用 Node.js 构建一个 Web 服务端程序(3)
  • 【设计模式】深入理解Python中的组合模式(Composite Pattern)
  • 《分布式机器学习模式》:解锁分布式ML的实战宝典
  • html 公共路径标签base
  • ​​Spring6梳理20——基于注解管理之Spring全注解开发
  • 国家行政区划编码格式化和树形结构转换示例
  • fluent-ffmpeg操作MP3文件深入解析
  • 如何使用 Maven 不同环境使用不同资源文件 提升项目安全性
  • Windows 10、Office 2016/2019 和 PPTP 和 L2TP协议即将退役,企业应尽早做好准备
  • JAVA开发环境:IntelliJ IDEA、Java JDK、Maven 安装配置
  • 网易面试:请设计一个高可用性的软件架构,说明设计思路
  • 分布式链路追踪-01初步认识SkyWalking
  • win10下用vscode和pycharm运行odoo18的速度对比
  • Xcode16 编译运行YYCache iOS18 sqlite3_finalize 闪退问题解决方案
  • Arduino-ESP32机器人控制器设计练习题汇总
  • 一款好用的搜索软件——everthing(搜索比文件资源管理器快)
  • gin入门教程(3):创建第一个 HTTP 服务器
  • 自定义表单小程序系统源码 报名表单+付费表单+预约表单三合一 带源代码包以及搭建部署教程
  • windows复制文件到U盘,ubuntu打开U盘中文显示?
  • 嵌入式硬件设计:技术与实践
  • GESP CCF python四级编程等级考试认证真题 2024年9月