下面代碼中利用了兩種比對(duì)的方法,一 對(duì)圖片矩陣(m x m)求解特征值,通過(guò)比較特征值是否在一定的范圍內(nèi),判斷圖片是否相同。二 對(duì)圖片矩陣(m x m)中1求和,通過(guò)比較sum和來(lái)比較圖片。
# -*- coding: utf-8 -*-
import cv2 as cv
import numpy as np
import os
file_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是計(jì)算輸入圖片矩陣的特征值,通過(guò)對(duì)特征值的比較來(lái)實(shí)現(xiàn)圖片的比對(duì)
"""
# arg=np.linalg.eigvals(image)
"""arg是計(jì)算輸入二值圖片矩陣中1的個(gè)數(shù),通過(guò)1的總數(shù)來(lái)實(shí)現(xiàn)圖片的比對(duì)
"""
arg=sum(image)
image_one.append(name)
image_one.append(arg)
image_all_a.append(image_one)#將一個(gè)圖片的信息寫入
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)#將一個(gè)圖片的信息寫入
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 '比較結(jié)束'
print result_all
np.save('match_result1.npy',result_all)
以上這篇在python中利用opencv簡(jiǎn)單做圖片比對(duì)的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

