python opencv图像不同帧的相似度以及帧间差分计算

import matplotlib.pyplot as plt
import cv2
import numpy as np
import os
import pandas as pd
import time

start = time.process_time()
inputs1 = './inputs1'
inputs2 = './inputs2'
path0 = './txt-out'
if not os.path.exists(path0):
os.mkdir(path0)
path1 = './Last-Result'
if not os.path.exists(path1):
os.mkdir(path1)

f0 = open('./txt-out/chi-square.txt','w+')
f1 = open('./txt-out/correlation.txt','w+')
f2 = open('./txt-out/pasteur.txt','w+')
filepath1 = './inputs1'
filepath2 = './inputs2'
pathDir1 = os.listdir(filepath1)
pathDir1.sort(key=lambda x: int(x.split('-')[0]))
pathDir2 = os.listdir(filepath2)
pathDir2.sort(key=lambda x: int(x.split('-')[0]))

for allDir1,allDir2 in zip(pathDir1,pathDir2):
picpath1 = r'./inputs1/' + allDir1
picpath2 = r'./inputs2/' + allDir2
img1 = cv2.imdecode(np.fromfile(picpath1, dtype=np.uint8), 1)
img2 = cv2.imdecode(np.fromfile(picpath2, dtype=np.uint8), 0)
H1 = cv2.calcHist([img1], [0], None, [256],[0,256])
H1 = cv2.normalize(H1, H1, 0, 1, cv2.NORM_MINMAX, -1) # 对图片进行归一化处理
H2 = cv2.calcHist([img2], [0], None, [256],[0,256])
H2 = cv2.normalize(H2, H2, 0, 1, cv2.NORM_MINMAX, -1)
similarity0 = cv2.compareHist(H1, H2,cv2.HISTCMP_CHISQR) # 卡方检验
similarity1 = cv2.compareHist(H1, H2,cv2.HISTCMP_CORREL) # 相关性
similarity2 = cv2.compareHist(H1, H2,cv2.HISTCMP_BHATTACHARYYA) # 巴氏距离
print('当前正在计算:'+allDir1+'—— VS ——'+allDir2+' '+'请稍等……………')
'''
plt.subplot(2, 1,1)
plt.plot(H1)
plt.subplot(2,1,2)
plt.plot(H2)
plt.show()
'''
print(allDir1 + "--Vs--"+allDir2+':',similarity0,file = f0)
print(allDir1 + "--Vs--"+allDir2+':',similarity1,file = f1)
print(allDir1 + "--Vs--"+allDir2+':',similarity2,file = f2)
f0.close()
f1.close()
f2.close()

print(' ',' ','计算完成!')
file0 = open('. xt-outchi-square.txt', 'r')
df = file0.read().split(' ')

print(df,' ')

df0 = pd.DataFrame(df,columns=['Compare-Name'])
dt = df0['Compare-Name'].str.split(':',expand=True)
df0[['Compare-Name','chi-square']]=dt # 设置列名
df0['chi-square'] = df0['chi-square'].astype(np.float)

df0['Photoes'] = df0['Photoes'].astype('object')

df0.to_excel('./Last-Result/Chi-square-Result.xls','卡方性',index = False)
end = time.process_time()

print(' ','卡方性处理完成,请移步------→ Last-Result( Chi-square-Result.xls )中查看结果')
print('卡方性计算耗费时间: %s Seconds'%(end-start))

相似度

file1 = open('. xt-outcorrelation.txt', 'r')
df1 = file1.read().split(' ')

print(df1,' ')

df1 = pd.DataFrame(df1,columns=['Compare-Name'])
dt1 = df1['Compare-Name'].str.split(':',expand=True)
df1[['Compare-Name','correlation']]=dt1 # 设置列名
df1['correlation'] = df1['correlation'].astype(np.float)

df0['Photoes'] = df0['Photoes'].astype('object')

df1.to_excel('./Last-Result/correlation-Result.xls','相似度',index = False)
end = time.process_time()

print(' ','相似度处理完成,请移步------→ Last-Result( correlation-Result.xls )中查看结果')
print('相似度计算耗费时间: %s Seconds'%(end-start))

巴氏距离

file2 = open('. xt-outpasteur.txt', 'r')
df2 = file2.read().split(' ')

print(df2,' ')

df2 = pd.DataFrame(df2,columns=['Compare-Name'])
dt2 = df2['Compare-Name'].str.split(':',expand=True)
df2[['Compare-Name','pasteur']]=dt2 # 设置列名
df2['pasteur'] = df2['pasteur'].astype(np.float)

df0['Photoes'] = df0['Photoes'].astype('object')

df2.to_excel('./Last-Result/pasteur-Result.xls','巴氏距离',index = False)
end = time.process_time()

print(' ','巴氏距离处理完成,请移步------→ Last-Result( pasteur-Result.xls )中查看结果')
print('巴氏距离计算耗费时间: %s Seconds'%(end-start))

原文地址:https://www.cnblogs.com/Tdazheng/p/13608797.html