Mat对象OpenCv的数学运算

时间:2013-12-30 21:59:12

标签: java c++ opencv

我想将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

请帮帮我

2 个答案:

答案 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;