c ++ opencv中的等价matlab代码

时间:2015-04-17 06:37:59

标签: c++ matlab opencv opencv3.0

我基本上想在matlab中使用c ++知道以下代码的等效内容

MascMmax = s3> MMAX

这比较了两个矩阵的所有位置,否则就满足条件1和0。

在opencv中我发现我可以做但我保存了255,我不知道我是怎么做的那样.1和0。

示例:

a [1,2,3]
b [2,1,4]

c = a > b

c[0,1,0]

2 个答案:

答案 0 :(得分:2)

当然,函数compare()执行两个数组或数组和标量值的每元素比较。

您可以进行以下比较:

  • CMP_EQ src1等于src2
  • CMP_GT src1大于src2
  • CMP_GE src1大于或等于src2
  • CMP_LT src1小于src2
  • CMP_LE src1小于或等于src2
  • CMP_NE src1不等于src2

当比较结果为true时,输出数组的对应元素设置为255.比较操作可以用等效的矩阵表达式替换:

Mat dst1 = src1 >= src2;
Mat dst2 = src1 < 8;

答案 1 :(得分:1)

我还没有在Opencv中看到过这样的功能,但你可以做到以下几点:

a)使用

将c计算为a-b
addWeighted(a,1,b,-1,0,c). 

addWeighted会检查您的数据类型的范围,因此对于您的8UC1-Data,所有负值都将映射到零,以便所有带有[i]&lt; = b [i]的点,您将拥有c [i] = 0,否则c [i]&gt; 0 b)使用cv :: threshold将c中的所有正条目设置为固定值,在您的情况下

cv::threshold(c,0,1,THRESH_BINARY)

0是您的阈值,1是设置值大于0(您的阈值)的所有像素的值。

如果您有签名数据类型,该方法将完全相同:)