今天它尝试使用linemod算法,它是OpenCV的一部分。在早期的C ++项目中,我已经使用了linemod和 它的工作方式与文档中描述的一样,但这一次我尝试了 使用Python API。
这是我的方法:
import cv2
template = cv2.imread('path_to_template')
lineModDetector = cv2.linemod.getDefaultLINE()
print(len(lineModDetector.getModalities()))
mask = cv2.bitwise_not(template)[:,:,1]
ret, boundingBox = lineModDetector.addTemplate([template], "circle", mask)
print(ret)
print(boundingBox)
模板图片:
但是当我尝试添加模板时,它总是失败。有人知道如何让它按预期工作吗?我已经看过C ++源代码,但一切似乎都没问题。我猜包装器代码可能是问题?!
最佳,
曼努埃尔
答案 0 :(得分:0)
遮罩不与模板图像相交。即使图像被高斯滤波,遮罩区域中的sobel幅度也低于阈值(默认值为55)。所以它不会成功。 您可以降低阈值,也可以不设置遮罩。