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

网站上传办法wordpress 七牛云图床

网站上传办法,wordpress 七牛云图床,基于vue.js旅游网站开发,优酷网站模板下载一、整体步骤 本脚本中#xff0c;关键步骤包括以下步骤#xff1a; 1、图片加载#xff1a; 脚本会遍历指定的图片目录#xff0c;将所有图片加载到内存中。 2、图像预处理#xff1a; 比较之前#xff0c;通常需要对图片进行预处理#xff0c;如调整大小、灰度化或直方…一、整体步骤 本脚本中关键步骤包括以下步骤 1、图片加载 脚本会遍历指定的图片目录将所有图片加载到内存中。 2、图像预处理 比较之前通常需要对图片进行预处理如调整大小、灰度化或直方图均衡化以消除          颜色、尺寸等因素的影响。 3、相似度计算 图像相似度的衡量有很多种方法如像素级别的差异均方误差、结构相似度指数              (SSIM)、归一化互信息(NMI)或者哈希算法如PCA-SIFT、BRIEF等。OpenCV提供了部            分功能来实现这些算法例如cv2.compareHist可以用于直方图比较。 4、阈值设置 根据实际需求设定一个相似度阈值低于这个阈值的图片被认为是重复的。该阈值可          能需要通过实验调整以达到最佳效果。 5、比较与去重 脚本会比较每一对图片的相似度如果超过阈值则认为这两张图片是重复的移动到          指定目录。这里可能使用一种数据结构如字典或集合来记录已检查过的图片避免不必            要的比较。 二、原理解析 2.1 均值哈希 1.缩放图片缩放为8*8保留结构除去细节。      2.灰度化转换为灰度图。      3.求平均值计算灰度图所有像素的平均值。      4.比较像素值大于平均值记作1相反记作0总共64位。      5.生成hash将上述步骤生成的1和0按顺序组合起来既是图片的指纹hash。      6.对比指纹将两幅图的指纹对比计算汉明距离即两个64位的hash值有多少位是不一样              的不相同位数越少图片越相似。 2.2 插值哈希 缩小图像将输入图像调整为10x10像素可自己设置以便进行后续的差值计算。 灰度化将彩色图像转换为灰度图像。 计算差异值比较相邻像素的灰度值如果左边的像素比右边的更亮则记录为1否则为0。每行10个像素通过左右像素的两两比较会产生10个不同的差异值一共10行则会产生100个差异值。 生成哈希值将64位的二进制值按每4个字符为1组转换成16进制生成一个长度为16的字符串。 哈希值比较通过比较两个图像的哈希值的汉明距离Hamming Distance评估图像的相似度距离越小表示图像越相似。 2.3 感知哈希 均值哈希算法过于严格不够精确更适合搜索缩略图为了获得更精确的结果可以选择感知哈希 算法它采用的是DCT离散余弦变换来降低频率的方法。 1. 缩小图片32 * 32是一个较好的大小这样方便DCT计算      2. 转化为灰度图把缩放后的图片转化为灰度图。      3. 计算DCT:  DCT把图片分离成分率的集合      4.缩小DCTDCT计算后的矩阵是32 * 32保留左上角的8 * 8这些代表图片的最低频率。      5.计算平均值计算缩小DCT后的所有像素点的平均值。      6.进一步减小DCT大于平均值记录为1反之记录为0.      7.得到信息指纹组合64个信息位顺序随意保持一致性。      8.最后比对两张图片的指纹获得汉明距离即可。 2.4 直方图对比 直方图距离通过比较图像的灰度直方图来衡量相似性直方图相似度值越大图像越相似。 最后附上整体代码只需替换图片路径、选择使用哪种方法、调整阈值即可使用 import cv2 import numpy as np import os import shutil from PIL import Image# 均值哈希算法 def aHash(img,shape(10,10)):# 缩放为10*10img cv2.resize(img, shape)# 转换为灰度图gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# s为像素和初值为0hash_str为hash值初值为s 0hash_str # 遍历累加求像素和for i in range(shape[0]):for j in range(shape[1]):s s gray[i, j]# 求平均灰度avg s / 100# 灰度大于平均值为1相反为0生成图片的hash值for i in range(shape[0]):for j in range(shape[1]):if gray[i, j] avg:hash_str hash_str 1else:hash_str hash_str 0return hash_str# 差值哈希算法 def dHash(img,shape(10,10)):# 缩放10*11img cv2.resize(img, (shape[0]1, shape[1]))# 转换灰度图gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)hash_str # 每行前一个像素大于后一个像素为1相反为0生成哈希for i in range(shape[0]):for j in range(shape[1]):if gray[i, j] gray[i, j 1]:hash_str hash_str 1else:hash_str hash_str 0return hash_str# 感知哈希算法(pHash) def pHash(img,shape(10,10)):# 缩放32*32img cv2.resize(img, (32, 32)) # , interpolationcv2.INTER_CUBIC# 转换为灰度图gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 将灰度图转为浮点型再进行dct变换dct cv2.dct(np.float32(gray))# opencv实现的掩码操作dct_roi dct[0:10, 0:10]hash []avreage np.mean(dct_roi)for i in range(dct_roi.shape[0]):for j in range(dct_roi.shape[1]):if dct_roi[i, j] avreage:hash.append(1)else:hash.append(0)return hash# 通过得到RGB每个通道的直方图来计算相似度 def classify_hist_with_split(image1, image2, size(256, 256)):# 将图像resize后分离为RGB三个通道再计算每个通道的相似值image1 cv2.resize(image1, size)image2 cv2.resize(image2, size)sub_image1 cv2.split(image1)sub_image2 cv2.split(image2)sub_data 0for im1, im2 in zip(sub_image1, sub_image2):sub_data calculate(im1, im2)sub_data sub_data / 3return sub_data# 计算单通道的直方图的相似值 def calculate(image1, image2):hist1 cv2.calcHist([image1], [0], None, [256], [0.0, 255.0])hist2 cv2.calcHist([image2], [0], None, [256], [0.0, 255.0])# 计算直方图的重合度degree 0for i in range(len(hist1)):if hist1[i] ! hist2[i]:degree degree (1 - abs(hist1[i] - hist2[i]) / max(hist1[i], hist2[i]))else:degree degree 1degree degree / len(hist1)return degree# Hash值对比 def cmpHash(hash1, hash2,shape(10,10)):n 0# hash长度不同则返回-1代表传参出错if len(hash1)!len(hash2):return -1# 遍历判断for i in range(len(hash1)):# 相等则n计数1n最终为相似度if hash1[i] hash2[i]:n n 1return n/(shape[0]*shape[1])if __name__ __main__:load_path rimages_full # 要去重的文件夹save_path rimg_dir_repeat # 空文件夹用于存储检测到的重复的照片os.makedirs(save_path, exist_okTrue)# 获取图片列表 file_map字典{文件路径filename : 文件大小image_size}file_map {}image_size 0# 遍历filePath下的文件、文件夹包括子目录for parent, dirnames, filenames in os.walk(load_path):# for dirname in dirnames:# print(parent is %s, dirname is %s % (parent, dirname))for filename in filenames:image_size os.path.getsize(os.path.join(parent, filename))file_map.setdefault(os.path.join(parent, filename), image_size)# 获取的图片列表按 文件大小image_size 排序file_map sorted(file_map.items(), keylambda d: d[1], reverseFalse)file_list []for filename, image_size in file_map:file_list.append(filename)# 取出重复的图片file_repeat []for currIndex, _ in enumerate(file_list):dir_image1 cv2.imread(file_list[currIndex])dir_image2 cv2.imread(file_list[currIndex 1])hash1 aHash(dir_image1) # 此处可替换不同的方法 hash2 aHash(dir_image2) # 此处可替换不同的方法 result cmpHash(hash1, hash2)if (result 0.7): # 阈值设置0.7可以自己调节file_repeat.append(file_list[currIndex 1])print(\n相同的图片, file_list[currIndex], file_list[currIndex 1])else:print(\n不同的图片, file_list[currIndex], file_list[currIndex 1])currIndex 1if currIndex len(file_list) - 1:break# 将重复的图片移动到新的文件夹实现对原文件夹降重for image in file_repeat:shutil.move(image, save_path)print(正在移除重复照片, image)
http://www.dnsts.com.cn/news/138797.html

相关文章:

  • 免费拿项目做的网站灵犀科技 高端网站建设背景图
  • 高端建站准备材料请人做网站收费多少钱
  • 优秀电子商务网站企业网站如何做推广
  • 简洁大气企业网站源码万网网站模板购买
  • 做网站的费用计入销售费用吗深圳网站建设服务哪一个便宜
  • 网站关键词热度深圳好的网站制作哪家快
  • 网站栏目建设征求意见电商网站的二级怎么做
  • 网站建设基础包括成都广告公司招聘
  • 网站免费关键词如何做交换友情链接的要求有
  • 专业微信网站建设多少钱云服务器网站搭建
  • 百度网站惩罚期网站建设技术 论坛
  • 营销型网站建设+课程网页模版比较出名的网站
  • 网站域名收费标准如何查询注册过的网站
  • 杭州微网站开发公司电话网站建设公司哪里有
  • 青岛做网站eoe给企业做网站的公司有哪些
  • 做网站需要花费那方面的钱用vs2012做简单网站
  • 宠物网站建设目标wordpress创建专题
  • 图书馆网站建设的建议上海的设计网站有哪些内容
  • 北京建网站公司飞沐地方网站还有得做吗
  • 做相册本哪个网站好用吗百度指数是什么
  • 返佣贵金属交易所网站建设开发一个公众号需要多少钱
  • 崇信县门户网站领导动态南昌市做网站
  • 官方网站找oem做洗发水厂家展台设计网站推荐
  • 阿里巴巴国际站网页版温州网站建
  • 厦门市城市建设档案馆网站卢松松网站的百度广告怎么做的
  • 盘锦化工网站建设旅游网站哪个好
  • 程序员做网站赚钱有没有IT做兼职的网站
  • 网站后台怎么更新申请免费的网站
  • 网站建设公司不能备案吗网站建设先有域名然后呢
  • 大连网站设计培训班开店铺的流程