OpenCV 4.10.0
开源计算机视觉
|
有很多超参数与图表检测相关。默认值经过选择,以最大程度提升一般情况下的检测。但这些值可能不适用于您的用例。可对这些值进行配置以提高针对特定用例的准确性。为此,您需要创建 DetectorParameters
的一个实例。
mcc::
很重要。它包含很多值,完整列表可参见 DetectorParameters
的文档。在本教程中,我们将操作 maxError
的值。可对其他值进行类似的配置。
maxError
控制在检测中允许的错误程度。例如,如果图表中的某个单元格被遮挡,这将会增大错误。默认值允许某种程度的遮挡容忍度,增大(或减小)maxError
之后,将会增大(或减小)这种容忍度。
您可以像这样更改其值。
要在检测系统中使用此值,您需要将其传递到进程函数。
这就是操作这些值的简单方法。但有一个陷阱,即检测管道的部件很多。如果您只是这样运行,将无法单独看到此更改的效果。前置部件可能没有检测到任何可能的色彩校验器候选对象,因此更改 maxError
的值不会产生任何效果。幸运的是,OpenCV 提供了一种对此问题的解决方案。您可以让代码输出多幅图像,每幅图像都显示管道中某个部件的效果。这在默认情况下是禁用的。
方法:打开文件 opencv_contrib/modules/mcc/include/opencv2/mcc/checker_detector.hpp
,在顶部附近有这样一行
取消对此行注释并重建 OpenCV。此后,每当您运行检测器时,它都会显示多张图像,每张图像都对应管道的一部分。此外,您可能还会看到一些重复,比如首先您将看到“阈值输出”,然后一些更多图像,再次是对应同一图像的“阈值输出”,但与前一个略有不同,这是因为在内部,该图像进行多次阈值设置,具有不同的参数以针对色卡的不同可能尺寸进行调整。