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

时间:2013-03-18 13:14:27

标签: c++ opencv matrix

我有一个负整数和正整数矩阵。我想将负元素设置为0,将正元素设置为1。 我不想单独设置每个元素。

OpenCv中是否有任何功能/功能组合可以执行此操作?

2 个答案:

答案 0 :(得分:4)

查看函数threshhold。此外,this tutorial解释了如何通过对每个数组元素应用固定级别阈值来获取二进制图像。

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

答案 1 :(得分:1)

您正在做的是thresholding。答案取决于您使用的语言。以下是一些例子。

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)