首页 > 编程 > Python > 正文

在python中利用opencv简单做图片比对的方法

2019-11-25 13:24:10
字体:
来源:转载
供稿:网友

下面代码中利用了两种比对的方法,一 对图片矩阵(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简单做图片比对的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表