我基本上想在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]
答案 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-baddWeighted(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(您的阈值)的所有像素的值。
如果您有签名数据类型,该方法将完全相同:)