在CV_32FC1 mat上使用cv :: inrange

时间:2017-06-18 19:25:43

标签: c++ opencv

我有一个包含CV_32FC1值的cv :: Mat。 我使用inRange函数来获取具有特定值的元素的位置:

cv::inRange(map,cv::Scalar(0),cv::Scalar(0.5),mask);

但是mask数组中的所有元素都是零,但我确定掩码必须有255个值。我能解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我在CV_32FC1矩阵上成功使用了inRange。

代码:cv::inRange(map,cv::Scalar(0),cv::Scalar(0.5),mask);将输出名为mask的CV_8UC1矩阵,其尺寸与map相同。

mask将在每个位置包含255,该地图的值介于0和.5(含)之间,其他地方为0。

如果mask完全填充0,则map不得包含介于0和.5之间的任何值。

尝试增加范围,看看mask中是否有非零值。

我从评论中看到,您希望找到所有非零值的位置作为第二步。

一旦你增加了范围以从inRange函数获得有意义的结果,只需使用findNonZero(mask, locations);locations矩阵设置为N乘1,输入CV_32SC2 ,位置矩阵。