C++ 代码翻译成 Java

C++ Code translation to Java

本文关键字:Java 翻译 代码 C++      更新时间:2023-10-16

我正在尝试将C++的opencv脚本转换为Java,但是我一直遇到以下几行:Mat.data[x]。我检查了Java版本,我能找到的最接近的方法是Mat.dataAddr()。看看它在下面的代码中的使用方式:

for (i = 0 ; i < rows ; i++)
{ // average row by row
    row = src.row(i);
    mean = 0;
    for (j = 0 ; j < row.cols ; j++)
    {
        // here is the method 
        mean + = row.data[j];
    }
    mean /= row.cols;
    dist.data[i] = mean;
}

看起来他们正在尝试访问矩阵的索引,但他们试图访问什么columnrow

代码段尝试计算该行中所有元素的每一行的平均值。输入二维矩阵src,输出一维数组dist

因此,对于每一行(使用索引变量 i),它将整行放入一个适当命名为 row 的变量中。

row = src.row(i);

之后,它使用变量 j 作为索引遍历该行中的值,将每个值添加到变量 mean 中。

    mean + = row.data[j];

还有你提到的那句话。所做的只是引用数组的第 j 个元素。在这种情况下,数组是行i值的一维数组。所以它是第 i 行和第 j 列,row.data[j] 只获取该元素的值。

@Andy Turner的注释(乘以src乘以填充

1.0/colscols x 1矩阵)是计算平均值的最直接方法,但它需要人们理解一点线性代数(如果一个人正在编写矩阵操作代码,应该理解)。