在CV_32FC1垫上使用 cv::inrange

use cv::inrange on CV_32FC1 mat

本文关键字:cv inrange CV 32FC1      更新时间:2023-10-16

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

cv::inRange(map,cv::Scalar(0),cv::Scalar(0.5),mask);
但是掩码

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

我已经成功地在CV_32FC1矩阵中使用了inRange。

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

mask 在地图值介于 0 和 .5(含(之间的每个位置都包含 255,在其他位置都包含 0

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

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


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

增加范围以从inRange函数中获得有意义的结果后,只需使用 findNonZero(mask, locations);locations矩阵设置为 N x 1,类型 CV_32SC2,位置矩阵。