c ++ opencv中的等价matlab代码
Posted
技术标签:
【中文标题】c ++ opencv中的等价matlab代码【英文标题】:equivalence matlab code in c ++ opencv 【发布时间】:2015-04-17 06:37:59 【问题描述】:我基本上想知道matlab中以下代码与使用c ++的opencv等效
MascMmax = s3 > Mmax
这比较两个矩阵的所有位置,否则满足条件 1 和 0。
在opencv中我发现我可以做但是我保存了255, 0。我想知道我是怎么做的喜欢1和0。
示例:
a [1,2,3]
b [2,1,4]
c = a > b
c[0,1,0]
【问题讨论】:
我不完全确定你想做什么.. 除以 255 怎么样? 谢谢,快跑!!! , 太感谢了!!!没想到 【参考方案1】:当然,函数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;
【讨论】:
【参考方案2】:我还没有在 Opencv 中看到过这样的函数,但你可以这样做:
a) 使用
将 c 计算为 a-baddWeighted(a,1,b,-1,0,c).
addWeighted 检查您的数据类型的范围,因此对于您的 8UC1-Data,所有负值都将被映射到零,这样所有带有 a[i] 0 b)在您的情况下,使用 cv::threshold 将 c 中的所有正条目设置为固定值
cv::threshold(c,0,1,THRESH_BINARY)
0 是您的阈值,1 是所有大于 0(您的阈值)的像素设置的值。
如果您有签名数据类型,则该方法的工作原理完全相同:)
【讨论】:
以上是关于c ++ opencv中的等价matlab代码的主要内容,如果未能解决你的问题,请参考以下文章
什么是matlab的imadjust在python中的等价物?
Matlab与C/C++混合编程之Matlab调用OpenCV库函数