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)
时间: 2023-08-28 22:11:46 浏览: 206
这个错误提示是因为 `match()` 方法缺少一个必需的参数 `threshold`。 `match()` 方法需要传入一个阈值参数,用于筛选匹配的结果。你可以查看一下你的代码,看看是否有遗漏该参数。如果确实遗漏了该参数,你可以尝试传入一个合适的阈值值,例如:
```python
matches, scores = detector.match(image_gray, threshold=90)
```
其中 `threshold` 的值可以根据你的具体情况进行调整。
相关问题
predict_table.py: error: argument --det_model_dir: expected one argument
This error message indicates that the program "predict_table.py" is expecting an argument for the parameter "--det_model_dir", but none was provided.
To fix this error, you need to provide the path to the directory where the detection model is stored as an argument for the "--det_model_dir" parameter. For example, if the detection model is stored in a directory called "models/table_detector", you would run the program with the following command:
python predict_table.py --det_model_dir models/table_detector
Make sure to replace "models/table_detector" with the actual path to your detection model directory.
matches, scores = detector.match(image_gray,threshold=20)报错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'
这个错误提示是在调用OpenCV的`cv::linemod::Detector::match`函数时出现了断言错误,具体是因为`sources`和`modalities`的大小不一致导致的。
根据OpenCV官方文档,这个函数的参数说明如下:
```
int cv::linemod::Detector::match(InputArrayOfArrays sources, float threshold, std::vector<Match>& matches, InputArray mask = noArray(), std::vector<int>* class_ids = NULL, std::vector<int>* template_ids = NULL, OutputArray quantized_image = noArray()) const
```
其中,`sources`是一个输入数组的数组,表示输入图像。每个输入数组都是一个包含了一个或多个渐变方向直方图的Mat对象。而`modalities`是一个由整数构成的向量,表示每个输入数组对应的模态。在`cv::linemod::Detector::addTemplate`函数中,每个添加的模板都会被分配一个模态,而`sources`中的每个输入数组都必须与之前添加的模板使用相同的模态。
因此,你需要检查一下你的代码中是否存在以下问题:
- `sources` 数组的大小和 `modalities` 向量的大小不一致。
- `sources` 数组中的某个输入数组使用了一个之前未定义的模态。
- `sources` 数组中的某些输入数组与之前添加的模板使用的模态不一致。
如果以上问题都不存在,那么你可能需要检查一下输入的图像数据是否正确,以及函数调用的其他参数是否正确。
阅读全文