7

コードの一部を投稿しました。これは、取り除くことができないような奇妙なエラーが発生し続けるためです。問題は次の行にあります: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;
}

Eclipseから取得するエラーは次のとおりです。

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

私はtutorial3Camera-control(Androidバージョン2.4.4用のOpenCV)の編集バージョンを使用しており、出力はCannyのエッジ検出として表示されます。細かい部分を取り除くには、ガウシアンぼかしが必要です。コードのこの行の何が正確に間違っているのか誰かが知っていますか?

4

2 に答える 2

4

このコードは正常に動作します。必要に応じてパラメータを並べ替えてください。

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

サイズは、カーネル サイズとして使用することを意味します。また、カーネル サイズは奇数でなければなりません。50は、X方向のカーネル標準偏差を示しています。

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

ここで sigma には 50 が渡されるので、sigmaX = sigmaY = 50

于 2013-05-04T11:58:38.693 に答える
2

Alexander Smorkalov からこのソリューションを入手しましたが、うまくいきました。Imgproc.GaussianBlur(mGray, mGray, new Size (5,5), 2.2, 2); を変更するだけです。Imgproc.GaussianBlur(mGray, mGray, new org.opencv.core.Size (5,5), 2.2, 2); に

于 2013-03-06T17:25:06.743 に答える