我想将C ++代码重写为Java。我正在使用OpenCV4Android。 C ++中的代码看起来像那样
{
double meanI = 0.0;
{
Mat tmp;
pow(abs(I), alpha, tmp);
meanI = mean(tmp).val[0];
}
I = I / pow(meanI, 1.0/alpha);
}
{
double meanI = 0.0;
{
Mat tmp;
pow(min(abs(I), tau), alpha, tmp);
meanI = mean(tmp).val[0];
}
I = I / pow(meanI, 1.0/alpha);
}
我不知道如何从OpenCV Mat对象那样制作abs
abs(I)
我不知道如何对矩阵和双数进行划分:
I = mat/double
请帮帮我
答案 0 :(得分:4)
您可以在Java中使用等效项。 您可以使用:
而不是B = abs(A)Core.absdiff(A, Scalar.all(0), B);
关于每元素分区,您可以使用Core.divide()
Core.divide(A,Scalar.all(d), B);
它相当于B = A / d
答案 1 :(得分:0)
对于abs()
,您可以将其用作:
cv::Mat Result = abs(I);
对于division by a scale
,您可以
cv::Mat Result = I / alpha;
或:
float beta = 1.0f / alpha;
cv::Mat Result = I * beta;