7

I posted a little part of my code, cause i keep getting a strange error that I can't seem to get rid of. The problem can be found on this line: Imgproc.GaussianBlur(mGray, mGray, new Size (5,5), 2.2, 2);

public Mat onCameraFrame(Mat inputFrame) {
    mGray = new Mat();
    Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY);    
    // doing a gaussian blur prevents getting a lot of false hits
    Imgproc.GaussianBlur(mGray, mGray, new Size (5,5), 2.2, 2);
    // Values 3 and 4are the LowerThreshold and UpperThreshold.
    Imgproc.Canny(inputFrame, mIntermediateMat, 80, 100);
    Imgproc.cvtColor(mIntermediateMat,mRgba, Imgproc.COLOR_GRAY2BGRA, 4);
    return mIntermediateMat;
}

The error i get from Eclipse is:

The method GaussianBlur(Mat,Mat,Size,double,double) in 
the type imgproc is not applicable for the arguments (Mat,Mat,CameraSize,int,int)

I am using an edited version of tutorial3 Camera-control (OpenCV for Android version 2.4.4) where the output is shown as Canny's edge detection. I need the GaussianBlur to get rid of some of the smaller details. Does anyone know what exactly is wrong in this line of the code?

Jay Walker
  • 4,654
  • 5
  • 47
  • 53
MysticBE
  • 93
  • 1
  • 4

2 Answers2

4

This code works fine. Just reorder the parameters as you need.

Imgproc.GaussianBlur(mGray, mGray, new Size(15,15),50);

Size means that you will use it as kernel size. Also kernel size must be odd! 50 shows the kernel standard deviation in the X direction.

Formula : sigma = 0.3 * ((kSize-1)*0.5 - 1) + 0.8

Here sigma is passed 50 so sigmaX = sigmaY = 50

R. Zagórski
  • 20,020
  • 5
  • 65
  • 90
COvayurt
  • 827
  • 2
  • 11
  • 36
2

I got this solution from Alexander Smorkalov, and it worked. Just change the Imgproc.GaussianBlur(mGray, mGray, new Size (5,5), 2.2, 2); to Imgproc.GaussianBlur(mGray, mGray, new org.opencv.core.Size (5,5), 2.2, 2);

MysticBE
  • 93
  • 1
  • 4