detector.match(image_gray)报错linemod_Detector.match() missing required argument 'threshold' (pos 2),linemod_Detector.match() missing required argument 'threshold' (pos 2)
时间: 2024-02-03 19:14:52 浏览: 73
这是因为`linemod_Detector.match()`方法需要传入一个阈值参数`threshold`,你可以尝试将代码修改为如下形式:
```python
matches, scores = detector.match(image_gray, threshold=70)
```
其中`threshold`的值可以根据需要进行调整。
相关问题
detector.match(image_gray)报错error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'match'- linemod_Detector.match() missing required argument 'threshold' (pos 2)
这个错误提示是因为 `match()` 方法缺少一个必需的参数 `threshold`。 `match()` 方法需要传入一个阈值参数,用于筛选匹配的结果。你可以查看一下你的代码,看看是否有遗漏该参数。如果确实遗漏了该参数,你可以尝试传入一个合适的阈值值,例如:
```python
matches, scores = detector.match(image_gray, threshold=90)
```
其中 `threshold` 的值可以根据你的具体情况进行调整。
# 读取模板图片 template = cv2.imread(template_path) # 转为灰度图像 template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY) # 创建Linemod匹配器 detector = cv2.linemod.getDefaultLINE() # 添加模板信息 detector.addTemplate(template_gray,'1', object_mask=None)# 将模板图像添加到检测器中,设置名称为 "template" # 读取待匹配图像 image = cv2.imread(image_path) # 转为灰度图像 image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 进行匹配 matches, scores = detector.match(image_gray,threshold=99)报错error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv_contrib\modules\rgbd\src\linemod.cpp:1397: error: (-215:Assertion failed) sources.size() == modalities.size() in function 'cv::linemod::Detector::match'
这个报错可能是由于添加模板信息时没有指定模板的尺寸和深度导致的。你可以尝试在添加模板信息时指定模板的尺寸和深度,例如:
```
detector.addTemplate(template_gray, '1', img_size=template_gray.shape[::-1], depth=cv2.CV_8U)
```
其中,`img_size`参数指定模板图像的尺寸,`depth`参数指定模板图像的深度。这样可以确保匹配器能够正确地处理模板图像。
阅读全文