我有一个包含CV_32FC1值的cv :: Mat。 我使用inRange函数来获取具有特定值的元素的位置:
cv::inRange(map,cv::Scalar(0),cv::Scalar(0.5),mask);
但是mask数组中的所有元素都是零,但我确定掩码必须有255个值。我能解决这个问题吗?
答案 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 ,位置矩阵。