matlab OpenCV中矩阵中元素的和?

3yhwsihp  于 2023-03-23  发布在  Matlab
关注(0)|答案(3)|浏览(169)

我需要对一个矩阵中的所有元素求和,我用了函数

sum(sum(A));

在matlab中。其中A是一个大小为300*360的矩阵。我想在OpenCV中实现相同的函数。我使用了这样的东西。

double s=cv::sum(cv::sum(A));

但是有一个错误显示无法将标量转换为双精度。如何解决这个问题?

kkih6yb8

kkih6yb81#

与Matlab不同,在opencv中,cv::sum(A)沿着所有维度求和,并返回一个等于Matlab的sum(sum(A))的单个数字(标量)。
所以你需要的是

double s = cv::sum(A)[0];
sqxo8psd

sqxo8psd2#

此外,您可以使用@Shai;

double sum = cv::sum(A).val(0);
umuewwlo

umuewwlo3#

Scalar cv::sum(InputArray src)返回一个Scalar,其中每个通道都被单独求和(输入图像必须有1到4个通道)。如果我们正在寻找的是所有通道上所有值的总和,则需要进一步对返回的Scalar的所有元素求和。一个线性解决方案可以使用dot乘积,其中标量填充1:

cv::sum(A).dot(cv::Scalar::ones());

相关问题