问题描述
目前,我尝试通过Python开发AI系统以匹配2张照片中的神圣物体。 第一张照片是DSLR相机拍摄的高分辨率圣物(A)照片。 第二张照片是手机相机捕获的神圣物体(A)照片。
我需要AI系统来预测相似百分比从0-100%。 我尝试了一些方法,但是收效不佳。
请提出哪种方法适合预测模型? 谢谢
解决方法
一种方法是使用template-matching
如果您将第一个图像用作模板:
- 模板图片:
步骤:
-
- 将
template
和source
图像都转换为灰度并应用Canny边缘检测。
- 将
-
- 检查模板是否与源图像匹配
-
result = cv2.matchTemplate(source,template,cv2.TM_CCOEFF)
-
我们需要
中的最大值和最大值位置result
-
(_,maxVal,_,maxLoc) = cv2.minMaxLoc(result)
-
- 获取坐标并绘制矩形
-
(startX,startY) = (int(maxLoc[0] * r),int(maxLoc[1] * r)) (endX,endY) = (int((maxLoc[0] + w) * r),int((maxLoc[1] + h) * r))
-
绘制矩形
-
cv2.rectangle(image,(startX,startY),(endX,endY),(0,255),2)
可能的问题: 为什么不使用原始图像尺寸?
答案:嗯,template-matching
对于小图像效果更好。否则,结果将不令人满意。如果我使用原始图像尺寸,则结果将是:link
可能的问题: 为什么使用cv2.TM_CCOEFF
?
答案:这只是一个示例,您可以尝试其他parameters
可能的问题: 如何使用模板匹配来计算相似度百分比?
答案:请查看此answer。如前所述,您可以将minMaxLoc
的输出用于相似度百分比。
有关完整代码,请查看opencv-python tutorial。