下面代碼中利用了兩種比對的方法,一 對圖片矩陣(m x m)求解特征值,通過比較特征值是否在一定的范圍內,判斷圖片是否相同。二 對圖片矩陣(m x m)中1求和,通過比較sum和來比較圖片。
# -*- coding: utf-8 -*-import cv2 as cvimport numpy as npimport osfile_dir_a='C:/Users/wt/Desktop/data/image1//'file_dir_b='C:/Users/wt/Desktop/data/image//'savepath='./'all_file_name_a=os.listdir(file_dir_a)all_file_name_b=os.listdir(file_dir_b)image_all_a=[]image_all_b=[]for name in all_file_name_a: image_one=[] image = cv.imread(file_dir_a+name, cv.IMREAD_GRAYSCALE) """arg是計算輸入圖片矩陣的特征值,通過對特征值的比較來實現圖片的比對 """ # arg=np.linalg.eigvals(image) """arg是計算輸入二值圖片矩陣中1的個數,通過1的總數來實現圖片的比對 """ arg=sum(image) image_one.append(name) image_one.append(arg) image_all_a.append(image_one)#將一個圖片的信息寫入 print '讀入a'# np.save('img_a.npy',image_all_a)for name in all_file_name_b: image_one=[] image = cv.imread(file_dir_b+name, cv.IMREAD_GRAYSCALE) """同上 """ # arg=np.linalg.eigvals(image) arg=sum(image) image_one.append(name) image_one.append(arg) image_all_b.append(image_one)#將一個圖片的信息寫入 print '讀入b'# np.save('img_b.npy',image_all_b)print '開始比較'result_all=[]for a in image_all_a: #比較小的 result = [] for b in image_all_b: # print sum(a[1]-b[1]) if abs(sum(a[1]-b[1]))<0.00001: result.append(a[0]) result.append(b[0]) result_all.append(result)print '比較結束'print result_allnp.save('match_result1.npy',result_all)以上這篇在python中利用opencv簡單做圖片比對的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答