在python中利用opencv简单做图片比对的方法
下面代码中利用了两种比对的方法,一对图片矩阵(mxm)求解特征值,通过比较特征值是否在一定的范围内,判断图片是否相同。二对图片矩阵(mxm)中1求和,通过比较sum和来比较图片。
#-*-coding:utf-8-*- importcv2ascv importnumpyasnp importos 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=[] fornameinall_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) fornameinall_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=[] forainimage_all_a:#比较小的 result=[] forbinimage_all_b: #printsum(a[1]-b[1]) ifabs(sum(a[1]-b[1]))<0.00001: result.append(a[0]) result.append(b[0]) result_all.append(result) print'比较结束' printresult_all np.save('match_result1.npy',result_all)
以上这篇在python中利用opencv简单做图片比对的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。