我需要将代码从c++转换为Java。当我开始转换用算术动作改变Mat对象数据的代码时,问题就出现了。我如何在Java中执行这些操作:
MatOfFloat diff_im = <initialization>
MatOfFloat add_im = <initialization>
int c = 200;
MatOfFloat o = diff_im/(add_im/2);
MatOfFloat uf = 128 + c*o;
在Java中不能这样做。与c++不同,您无法为对象重载操作符。您可以这样做以使用流畅的样式:
public class MathDouble {
private double value;
public static void main(String [] args) {
MathDouble x = new MathDouble(5);
MathDouble y = new MathDouble(6);
System.out(x.add(y));
}
public MathDouble(double v) { this.value = v; }
public MathDouble add(MathDouble c) {
return new MathDouble(this.value + c.value);
}
public String toString() { return Double.toString(this.value); }
}
我想知道除了包装之外,您的MatObject
类还提供什么标准float和double类型。似乎做了很多没有价值的工作。
库中有Complex
和Rational
数字类,它们确实提供了特殊值,但它们都不能重载操作符。你必须使用流畅的风格和编写方法。
刚刚用谷歌检查了OpenCV。您是否在问如何扩展他们现有的Java API?