我必须比较在不同周围光线下拍摄的同一物体的两个图像(例如一个在明亮的阳光下,另一个在白光下等),并且相机角度旋转以及尺寸可能不同。现在由于图像是同一个对象,它们应该几乎正确匹配。比较将根据颜色和形状进行。为此,需要重新调整测试图像,旋转并且应该补偿光的差异。请告诉我如何使用OpenCV-python来完成它。我正在使用OpenCV 3.0.0和python 2.7 我附上了要比较的同一物体的样本图像。
我真的没有得到任何好的方法来完成这项工作。请帮帮我 提前谢谢!
答案 0 :(得分:0)
尝试使用兴趣点检测器(如ORB或SIFT)匹配图像。以下是使用ORB的结果。
代码
import numpy as np
import cv2
from matplotlib import pyplot as plt
img1 = cv2.imread('im1.jpg',0)
img2 = cv2.imread('im2.jpg',0)
orb = cv2.ORB_create()
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)
good = []
for m,n in matches:
if m.distance < 0.95*n.distance:
good.append([m])
img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good, None,flags=2)
plt.imshow(img3),plt.show()
答案 1 :(得分:0)
在评论之后,如果对象没有像本例中那样的明显特征,我建议使用几何特征:
然后,当您的图像对齐时,您可以使用任何相关性进行比较。请查看本教程Histogram Comparison。