OpenCV 进行图像相似度对比的几种办法

您所在的位置:网站首页 对比图片设计 OpenCV 进行图像相似度对比的几种办法

OpenCV 进行图像相似度对比的几种办法

2024-07-12 11:38:28| 来源: 网络整理| 查看: 265

最近研究了下计算机视觉、图像对比参考了一下py的一些源码和思路等信息学习学习。 但是呢只能对应相似度、稍微改一改剪切了图片后的就变化差异比较大,对目前自己的需求来说不是很有作用,顺带整理分享一下。

如上图:图一:喵1.jpg    图二: g喵1.jpg   图三:喵3.jpg   图四:喵2.jpg(带着后冠的女王喵耶、必须单独一行)

 

代码执行结果如下:

对比后的相似度,相似度越高,图片越接近,达到1.0说明图片完全相同。

(下图为剪切的布偶喵咪和原猫咪对比)效果你肯定想着还可以的吧、但其实不算理想咯。

上下图、另一个不一样的猫咪对比。

可可爱爱的两个猫咪对比后:还没有0.5没一半、过分了喔、可能因为颜色不一样了?但是姿势角度是一样的?差异那么多?  嗯、下面有提供一些思路一起研究啦。。。

那就接下来继续第三只猫咪吧、冲鸭~

结果可以看到、当前的第三只可爱小猫咪和第二只对比过的相似度是差不多的。唉。。。 数据啊结果啊、总是那么的不如意。。。

 

反正都对比了就把女王喵和猫2好对比一下看看咯:这个摆明不一样的啦、

这个结果还是自己认为的妥妥的、对应上了。

计算两幅图片的相似度总结参考:

https://blog.csdn.net/u010977034/article/details/82733137?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.compare

猫咪对比的代码参考、互学共进步、顺带自己记录一下 稳稳的

from PIL import Image import glob import os class CompareImage(): def calculate(self, image1, image2): g = image1.histogram() s = image2.histogram() assert len(g) == len(s), "error" data = [] for index in range(0, len(g)): if g[index] != s[index]: data.append(1 - abs(g[index] - s[index]) / max(g[index], s[index])) else: data.append(1) return sum(data) / len(g) def split_image(self, image, part_size): pw, ph = part_size w, h = image.size sub_image_list = [] assert w % pw == h % ph == 0, "error" for i in range(0, w, pw): for j in range(0, h, ph): sub_image = image.crop((i, j, i + pw, j + ph)).copy() sub_image_list.append(sub_image) return sub_image_list def compare_image(self, file_image1, file_image2, size=(256, 256), part_size=(64, 64)): ''' 'file_image1'和'file_image2'是传入的文件路径 可以通过'Image.open(path)'创建'image1' 和 'image2' Image 对象. 'size' 重新将 image 对象的尺寸进行重置,默认大小为256 * 256 . 'part_size' 定义了分割图片的大小.默认大小为64*64 . 返回值是 'image1' 和 'image2'对比后的相似度,相似度越高,图片越接近,达到1.0说明图片完全相同。 ''' image1 = Image.open(file_image1) image2 = Image.open(file_image2) #调用"split_image"函数,把图片切割,并分别放在数组中 img1 = image1.resize(size).convert("RGB") sub_image1 = self.split_image(img1, part_size) img2 = image2.resize(size).convert("RGB") sub_image2 = self.split_image(img2, part_size) sub_data = 0 #把切割好的照片,从数组中一一对应的提出来,传入"calculate"函数,做直方图比较 for im1, im2 in zip(sub_image1, sub_image2): sub_data += self.calculate(im1, im2) x = size[0] / part_size[0] y = size[1] / part_size[1] pre = round((sub_data / (x * y)), 6) # print(str(pre * 100) + '%') if pre


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭