2013-03-18 169 views
5

我有一个负整数和正整数的矩阵。我想将负数元素设置为0,将正数元素设置为1. 我不想单独设置每个元素。Mat元素批量修改:负值为0,正值为1

在OpenCv中可以执行此操作的函数/函数组合吗?

+0

什么语言翻译你使用的是年龄? – Geoff 2013-03-18 13:38:42

+0

我正在使用C++。 – Barshan 2013-03-18 13:48:34

+0

(编辑错误标题。) – Geoff 2013-03-20 20:44:28

回答

4

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

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

你在做什么叫做thresholding。答案取决于你使用的是什么语言。以下是一些例子。

C++

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

Ç
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)