2013-03-04 14 views
7

Kodumun bir kısmını yayınladım, çünkü kurtulmak istemediğim tuhaf bir hata alıyorum. Problem şu satırda bulunabilir: Imgproc.GaussianBlur (mGray, mGray, new Size (5,5), 2.2, 2);Eclipse, Android için OpenCV ile GaussianBlur kullanırken hata veriyor

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

i Eclipse aldığım hata: Ben (OpenCV Android sürümü 2.4.4 için) çıkış olarak gösterilen Canny en tutorial3 Kamera-kontrolün düzenlenmiş bir sürümünü kullanıyorum

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

Kenar algılama. Daha küçük detaylardan kurtulmak için GaussianBlur'a ihtiyacım var. Kodun bu satırında tam olarak neyin yanlış olduğunu bilen var mı?

cevap

2

Bu çözümü Alexander Smorkalov'dan aldım ve işe yaradı. Sadece Imgproc.GaussianBlur (mGray, mGray, new Size (5,5), 2.2, 2) değiştirin; Imgproc.GaussianBlur (mGray, mGray, yeni org.opencv.core.Size (5,5), 2,2, 2);

4

Bu kod düzgün çalışıyor. Sadece parametreleri istediğiniz gibi yeniden sıralayın.

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

Boyut, onu çekirdek boyutu olarak kullanacağınız anlamına gelir. Ayrıca çekirdek boyutu tek olmalıdır! 50, X yönündeki çekirdek standart sapmasını gösterir.

formül: burada sigma = 0.3 * ((kSize-1)*0.5 - 1) + 0.8

Sigma geçirilir 50 çok sigmaX = sigmaY = 50

İlgili konular