簡體   English   中英

Eclipse 將 GaussianBlur 與 OpenCV for Android 結合使用時出錯

[英]Eclipse gives error when using GaussianBlur with OpenCV for Android

我發布了我的一小部分代碼,因為我不斷收到一個我似乎無法擺脫的奇怪錯誤。 問題可以在這一行找到: 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)

我正在使用 tutorial3 Camera-control (OpenCV for Android version 2.4.4) 的編輯版本,其中輸出顯示為 Canny 的邊緣檢測。 我需要 GaussianBlur 來去除一些較小的細節。 有誰知道這行代碼到底有什么問題?

這段代碼工作正常。 只需根據需要重新排列參數即可。

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

我從 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM