NumDisparity超出范围。

时间:2017-08-23 11:09:08

标签: c++ opencv opencv3.2

我正在使用调整参数进行块匹配。

我使用了numDisparities的以下条件。

if (bmTuneVar::numDisparities_slider < 16 )  bmTuneVar::numDisparities_slider = 16;

    if (bmTuneVar::numDisparities_slider % 16 == 0) bmTuneVar::numDisparities_slider+ 16;

当我从轨迹栏滑块获取值时。我明白了 超出范围的错误。和numDisparities应大于0并除以16。

我正在检查上述陈述。 然后我不知道它为什么会创建bug。 任何人都可以请指出原因。 谢谢。

2 个答案:

答案 0 :(得分:0)

if (bmTuneVar::numDisparities_slider % 16 == 0) bmTuneVar::numDisparities_slider+ 16;

你的想法是将numDisparities_slider增加16? 那应该是

if (bmTuneVar::numDisparities_slider % 16 == 0) bmTuneVar::numDisparities_slider+=16;

答案 1 :(得分:0)

我把它修好了。

首先初始化numDisparities_slider

numDisparities_maxValue 

并将此值设置为bm并使用任何值进行缩放。

如下所示。

bm->setNumDisparities(numDisparities_slider * 16);

希望这对其他人也有帮助。 干杯