C++ 在cv_32FC1垫上使用cv::inrange

C++ 在cv_32FC1垫上使用cv::inrange,c++,opencv,C++,Opencv,我有一个包含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_8

我有一个包含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(包括0和.5)之间的每个位置包含255,在其他位置包含0

如果
mask
完全用0填充,则
map
的值不得介于0和.5之间

尝试增大范围,查看是否在
掩码中获得非零值


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


一旦通过
inRange
函数增加了范围以获得有意义的结果,只需使用
findNonZero(掩码、位置)
要将
位置
矩阵设置为N乘1,请键入CV_32SC2,位置矩阵

如果将0和1作为上下限,会发生什么情况?在传递它之前,您是否在
map
上使用了
imshow()
,以确保它看起来像您期望的那样?是否确实存在0到0.5范围内的值?例如,试试范围-255到+255。或者试试testMat=map最大值不包含imshow()显示的像素值,多亏了Mika,我使用了testMat=map