OpenCV:对Matlab中的矩阵进行数学运算

时间:2015-12-13 10:03:10

标签: opencv

我有一个非常基本的问题。

下面的Matlab代码采用具有相同维度(matrix1, matrix2)的2个矩阵,并生成一个新矩阵result_matrix,在每个索引(i,j)中,它包含sqrt(matrix1[i][j] ^ 2 + matrix2[i][j] ^ 2)。< / p>

如何将这个简单的Matlab代码转换为C ++中的OpenCV,这样才能最简单,清晰,高效?

result_matrix = sqrt(matrix1 .^ 2 + matrix2 .^ 2);

2 个答案:

答案 0 :(得分:3)

对于此特定操作:

result_matrix = sqrt(matrix1 .^ 2 + matrix2 .^ 2);

您可以使用magnitude

Mat m1 = ...
Mat m2 = ...
Mat m3;
magnitude(m1, m2, m3);

这比@mirosval代码快3-4倍。

答案 1 :(得分:1)

假设您有矩阵a,b,c

Mat a;
Mat b;
Mat c;

你可以这样做:

pow(a, 2, a);
pow(b, 2, b);
sqrt(a + b, c);

最后c将包含结果。查看pow()sqrt()的文档,总和是通过Mat上的+运算符完成的,请参阅here