python Opencv计算图像相似度过程解析
2020-06-25 08:08:33 来源:易采站长站 作者:易采站长站整理
这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一、相关概念
一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直、大白腿、樱桃唇、瓜子脸。王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你儿子。
还有其他物品、什么桌子带腿、镜子反光能在里面倒影出东西,各种各样的特征,我们通过学习、归纳,自然而然能够很快识别分类出新物品。
而没有学习训练过的机器就没办法了。
但是图像是一个个像素点组成的,我们就可以通过不同图像之间这些差异性就判断两个图的相似度了。其中颜色特征是最常用的,(其余常用的特征还有纹理特征、形状特征和空间关系特征等)
其中又分为
直方图
颜色集
颜色矩
聚合向量
相关图
1、直方图
在Python中利用opencv中的calcHist()方法获取其直方图数据,返回的结果是一个列表,使用matplotlib,画出了这两张图的直方图数据图
import cv2
import numpy
from matplotlib import pyplot
if __name__ == '__main__':
imgobj1 = cv2.imread('pho.jpg')
imgobj2 = cv2.imread('ph1.jpg')
hist1 = cv2.calcHist([imgobj1], [0], None, [256], [0.0, 255.0])
hist2 = cv2.calcHist([imgobj2], [0], None, [256], [0.0, 255.0])
pyplot.plot(range(256), hist1, 'r')
pyplot.plot(range(256), hist2, 'b')
pyplot.show()
cv2.imshow('img1',imgobj1)
cv2.imshow('img2',imgobj2)
cv2.waitKey(0)
1.2 灰度图及作用
灰度图是只含有黑白颜色,和0~255亮度等级的图片。灰度图具有存储小,其亮度值就是256色调色板索引号,从整幅图像的整体和局部的色彩以及亮度等级分布特征来看,灰度图描述与彩色图的描述是一致的特点。因此很多真彩色图片的分析,第一步就是转换为灰度图,然后再进行分析。
真彩色,因为是24位,2(^8) * 2(^8)* 2(^8) = 16777216种颜色,需要调色板16777216 * 4byte字节的空间也就是64MB的调色板空间,所以真彩色是不用调色板的。
例如视频目标跟踪和识别时,第一步就是要转换为灰度图。现有的成熟分析算法多是基于灰度图像的,灰度图像综合了真彩色位图的RGB各通道的信息。
(一):单通道图,
俗称灰度图,每个像素点只能有有一个值表示颜色,它的像素值在0到255之间,0是黑色,255是白色,中间值是一些不同等级的灰色。(也有3通道的灰度图,3通道灰度图只有一个通道有值,其他两个通道的值都是零)。













闽公网安备 35020302000061号