如何更改Django默认主页为自定义主页,更改Djago默认主页为自定义主页,这是开始网页的第一步。......
opencv+python用直方图进行相似度判断、对比
计算图片的相似度有好几个方法, 比较简单的有直方图法。
通过计算两个图片的直方图,然后使用compareHist函数进行对比就可以进行简单的比较。
工具/原料
- opencv python
- pycharm win7
方法/步骤
直方图作为一种常用的方法,经常用在数据分析和图片处理过程,
采用直方图对比图片相似性,简单明了直观。
根据官网函数说明:
# compareHist(H1, H2, method) -> retval# @param H1 First compared histogram.# @param H2 Second compared histogram of the same size as H1.# @param method Comparison method, see cv::HistCompMethods
HistCompMethods:
HISTCMP_BHATTACHARYYA
Correlation ( HISTCMP_CORREL)相关性,
Chi-Square ( HISTCMP_CHISQR)卡方,
Intersection ( HISTCMP_INTERSECT )交集法,
Bhattacharyya distance ( HISTCMP_BHATTACHARYYA)常态分布比对的Bhattacharyya距离法。
import cv2 as cvimport numpy as npimport copyfrom matplotlib import pyplot as pltimage = cv.imread('c:\\meiping1.png')cv.imshow("image", image)pic = cv.imread('c:\\meiping4.png')cv.imshow("pic", pic)
两幅图有一定相似,但大有不同。
另外注意 必须大小一样,否则不行!
# 计算图1的直方图 然后分别归一化
histGrayImage = cv.calcHist([image], [1], None, [256], [0, 256])
cv.normalize(histGrayImage, histGrayImage,0,255*0.9,cv.NORM_MINMAX)
# 计算图2的直方图然后分别归一化
histGrayPic = cv.calcHist([pic], [1], None, [256], [0, 256])
cv.normalize(histGrayPic, histGrayPic,0,255*0.9,cv.NORM_MINMAX)
显示直方图
plt.subplot(2, 1, 1)
plt.plot(histGrayImage)
plt.subplot(2, 1, 2)
plt.plot(histGrayPic)
plt.show()
retval1 = cv.compareHist(histGrayImage, histGrayPic, cv.HISTCMP_BHATTACHARYYA)
print("retval1: {}".format(retval1))
retval2 = cv.compareHist(histGrayImage, histGrayPic, cv.HISTCMP_CORREL)
print("retval2: {}".format(retval2))
retval3 = cv.compareHist(histGrayImage, histGrayPic, cv.HISTCMP_CHISQR)
print("retval3: {}".format(retval3))
cv.waitKey(0)
从计算可以看出 相似度还是有一些的!
比想象的相似度要高.
注意事项
- 图片直接彩色就计算直方图 不用转灰度。
- 两幅图片大小要一致!
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
- 详细阅读
-
python中关于单/双引号和转义引号的区别详细阅读
python中关于单/双引号和转义引号的区别,ytho中单/双引号的作用是将引号中间的符号以字符串的形式传递,而在ytho中它们两个的功能是一样的,只不过在遇到转义引号的时候,两者的使用才有所区别,现......
2023-03-16 351 python
- 详细阅读