2013-03-04 2 views
7

Ich postete einen kleinen Teil meines Codes, weil ich einen seltsamen Fehler bekomme, den ich nicht loswerden kann. Das Problem kann in dieser Zeile gefunden werden: Imgproc.GaussianBlur (mGray, mGray, neue Größe (5,5), 2,2, 2);Eclipse gibt Fehler bei der Verwendung von GaussianBlur mit OpenCV für Android

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; 
} 

Der Fehler, den ich von Eclipse ist:

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

ich eine bearbeitete Version von tutorial3 Kamera-Steuerung verwenden (OpenCV für Android Version 2.4.4), wo der Ausgang als Canny des gezeigt wird Kantenerkennung. Ich brauche die GaussianBlur, um einige der kleineren Details loszuwerden. Weiß jemand, was in dieser Codezeile genau falsch ist?

Antwort

2

Ich habe diese Lösung von Alexander Smorkalov, und es hat funktioniert. Ändern Sie einfach die Imgproc.GaussianBlur (mGray, mGray, neue Größe (5,5), 2,2, 2); zu Imgproc.GaussianBlur (mGray, mGray, neue org.opencv.core.Size (5,5), 2.2, 2);

4

Dieser Code funktioniert einwandfrei. Ordnen Sie die Parameter einfach nach Bedarf neu an.

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

Größe bedeutet, dass Sie es als Kernel-Größe verwenden werden. Auch Kernelgröße muss ungerade sein! 50 zeigt die Kernstandardabweichung in X-Richtung.

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

sigma Hier ist bestanden 50 so Sigmax = sigmaY = 50

Verwandte Themen