2013-03-04 6 views
7

Umieściłem małą część mojego kodu, ponieważ ciągle dostaję dziwny błąd, którego nie mogę się pozbyć. Problem można znaleźć w tej linii: Imgproc.GaussianBlur (mGray, mGray, nowy rozmiar (5,5), 2,2, 2);Eclipse daje błąd podczas korzystania z GaussianBlur z OpenCV dla Androida

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

błąd pojawia się od Eclipse jest:

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

Używam zmodyfikowanej wersji tutorial3 kamery sterowania (OpenCV dla systemu Android w wersji 2.4.4), gdzie wyjście jest pokazany jako Canny użytkownika wykrywanie krawędzi. Potrzebuję GaussianBlur, aby pozbyć się kilku mniejszych szczegółów. Czy ktoś wie, co dokładnie jest nie tak w tym wierszu kodu?

Odpowiedz

2

Dostałem to rozwiązanie od Aleksandra Smorałowa, i zadziałało. Po prostu zmień Imgproc.GaussianBlur (mGray, mGray, new Size (5,5), 2.2, 2); do Imgproc.GaussianBlur (mGray, mGray, new org.opencv.core.Size (5,5), 2.2, 2);

4

Ten kod działa poprawnie. Zmień kolejność parametrów zgodnie z potrzebami.

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

Rozmiar oznacza, że ​​użyjesz go jako rozmiaru jądra. Również rozmiar jądra musi wynosić ! 50 pokazuje standardowe odchylenie jądra w kierunku X.

Wzór: sigma = 0.3 * ((kSize-1)*0.5 - 1) + 0.8

Tutaj Sigma przepuszcza 50 tak sigmaX = sigmaY = 50

Powiązane problemy