C++ 代码翻译成 Java

Posted

技术标签:

【中文标题】C++ 代码翻译成 Java【英文标题】:C++ Code translation to Java 【发布时间】:2016-01-14 20:05:00 【问题描述】:

我正在尝试将 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;

他们似乎正在尝试访问 Matrix 的索引,但他们尝试访问的是什么 columnrow

【问题讨论】:

为什么不直接将src 乘以一个填充有1.0 / colscols x 1 矩阵? 我的意思是:为什么要访问单个元素来计算平均值,为什么不将其作为矩阵乘法呢? @AndyTurner 我只需要row.data[j]的java翻译 @ChromeLanta 我只需要 row.data[j] 的 java 翻译——该行在 Java 中看起来(和所做)之间的明显区别是什么反对 C++?我没有看到。所以你是说如果你在 Java 程序中看到这个你会被难住:row.data[j]? 【参考方案1】:

sn-p 正在尝试计算该行中所有元素的每一行的平均值。输入二维矩阵为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 矩阵)是计算均值的最直接方法,但它需要理解一点线性代数(如果一个人正在编写矩阵操作代码,应该使用哪个)。

【讨论】:

@Erick G. Hagstrom 非常感谢,我想我必须重新访问我的Linear Algebra 你也可以使用reduce,参数dim=1rtype = CV_REDUCE_AVG。好吧,无论在 OpenCV Java 包装器中调用什么。

以上是关于C++ 代码翻译成 Java的主要内容,如果未能解决你的问题,请参考以下文章

将python字典翻译成C++

Matlab 到 C++ 的翻译

如何使用 C++ 中的 QtLinguist 将程序翻译成语言?

把.rc文件内容(貌似C++源码)翻译成中文

将 Typescript 翻译成 Java [关闭]

把smali逐行翻译成java代码,在线等...