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_EQsrc1 等于 src2CMP_GTsrc1 大于 src2CMP_GEsrc1 大于或等于src2CMP_LTsrc1 小于 src2CMP_LEsrc1 小于或等于src2CMP_NE src1 不等于 src2

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

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

【讨论】:

【参考方案2】:

我还没有在 Opencv 中看到过这样的函数,但你可以这样做:

a) 使用

将 c 计算为 a-b
addWeighted(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代码的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 中 MATLAB 的 caxis 等价物

openCV中的Matlab convn

什么是matlab的imadjust在python中的等价物?

Matlab与C/C++混合编程之Matlab调用OpenCV库函数

Matlab与C/C++混合编程之Matlab调用OpenCV库函数

类属性的 C++ 等价于 Matlab Abstract