2024-05-16 05:39:38 发布
网友
目前,我尝试用Python开发AI系统来匹配2张照片中的神圣物体。 第一张照片是由DSLR相机拍摄的高分辨率神圣物体(a)照片。 第二张照片是一个神圣的物体(a)手机摄像头拍摄的照片。
我需要人工智能系统来预测0-100%的相似性百分比。 我尝试了一些方法,但没有得到好的结果
请建议哪种方法适合预测模型? 谢谢
一种方法是使用template-matching
template-matching
如果将第一个图像用作模板:
源图像:
结果将是:
步骤:
template
source
template = cv2.imread("template_resized.jpg") template = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY) template = cv2.Canny(template, 50, 200)
source = cv2.imread("source_resized.jpg") source = cv2.cvtColor(source, cv2.COLOR_BGR2GRAY) source = cv2.Canny(source, 50, 200)
result = cv2.matchTemplate(source, template, cv2.TM_CCOEFF)
我们需要来自result的最大值和最大值位置
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, 0, 255), 2)
可能的问题:为什么不使用原始图像大小
答:嗯,template-matching对小图像效果更好。否则,结果并不令人满意。如果使用原始图像大小,结果将是:link
可能的问题:为什么使用cv2.TM_CCOEFF
cv2.TM_CCOEFF
答:这只是一个例子,你可以用另一个parameters进行实验
可能的问题:如何使用模板匹配计算相似性百分比
回答:请看这个answer。如上所述,您可以使用minMaxLoc的输出获得相似性百分比
minMaxLoc
有关完整代码,请查看opencv-python tutorial
一种方法是使用
template-matching
如果将第一个图像用作模板:
源图像:
结果将是:
步骤:
template
和source
图像转换为灰度,并应用Canny边缘检测李>result = cv2.matchTemplate(source, template, cv2.TM_CCOEFF)
我们需要来自
result
的最大值和最大值位置(_, maxVal, _, maxLoc) = cv2.minMaxLoc(result)
画矩形
可能的问题:为什么不使用原始图像大小
答:嗯,
template-matching
对小图像效果更好。否则,结果并不令人满意。如果使用原始图像大小,结果将是:link可能的问题:为什么使用
cv2.TM_CCOEFF
答:这只是一个例子,你可以用另一个parameters进行实验
可能的问题:如何使用模板匹配计算相似性百分比
回答:请看这个answer。如上所述,您可以使用
minMaxLoc
的输出获得相似性百分比有关完整代码,请查看opencv-python tutorial
相关问题 更多 >
编程相关推荐