将非零值转换为一

wki*_*ing 1 opencv

在Matlab中,我可以使用逻辑(img)将所有非零元素转换为一。

有没有一种简单的方法(即没有循环)将 cv::Mat 中存储的所有非零转换为 OpenCV 中的 1?

谢谢!

Mic*_*nov 5

有很多功能可以帮助您,但这取决于您拥有什么以及您想要获得什么。

1) OpenCV 具有函数比较和运算符“!=”(以及您可能需要的任何其他运算符)。你可以写:

img = (img != 0);
Run Code Online (Sandbox Code Playgroud)

这会将矩阵的任何非零值转换为 255。我知道您想将其转换为 1,但如果 255 对您来说足够好,那么这是最好的方法。在我过去遇到的任何任务中,转换为 255 总是比转换为 1 更好,因为您可以将生成的图像用于各种按位运算,如逻辑 AND、OR 等...

2)如果你确实想转换为1,并且你的矩阵是正整数(或字符,或短裤),你可以使用函数min

img = min(img,1);
Run Code Online (Sandbox Code Playgroud)

3)您也可以按照@Roger Rowland的建议使用函数阈值