Mat元素批量修改:将负数改为0,将正数改为1

5

我有一个由正负整数组成的矩阵。我想将负元素设为0,将正元素设为1。但我不想逐个设置每个元素。

在OpenCV中是否有任何函数/函数组合可以执行此操作?


你使用的是哪种编程语言? - Geoff
(Edited for typos in title.) - Geoff
2个回答

4

请看函数threshold,以及这篇教程,它解释了如何通过对每个数组元素应用固定级别的阈值来获取二进制图像。

cv::Mat source_array, binary_output;
cv::threshold(source_array, binary_output, 0, 1, cv::THRESH_BINARY); 

1
你正在做的是阈值化。答案取决于你使用的编程语言。以下是几个例子。

C++

cv::threshold(m, m, 0, 1, cv::THRESH_BINARY);

C

cvThreshold(m, m, 0, 1, THRESH_BINARY);

Python (numpy, cv2)

m = m > 0

Python (cv)

cv.Threshold(m, m, 0, 1, cv.CV_THRESH_BINARY)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接