【问题标题】:Eclipse gives error when using GaussianBlur with OpenCV for AndroidEclipse 在将 GaussianBlur 与 OpenCV for Android 一起使用时出错
【发布时间】:2013-02-18 22:22:26
【问题描述】:

我发布了我的一小部分代码,因为我不断收到一个我似乎无法摆脱的奇怪错误。问题出在这一行: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 版本 2.4.4),其中输出显示为 Canny 的边缘检测。我需要 GaussianBlur 来去除一些较小的细节。有谁知道这行代码到底出了什么问题?

【问题讨论】:

    标签: java android opencv gaussian


    【解决方案1】:

    此代码运行良好。只需根据需要重新排序参数即可。

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

    Size 表示您将使用它作为内核大小。内核大小也必须是奇数! 50 表示 X 方向的内核标准偏差。

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

    这里 sigma 传递了 50 所以 sigmaX = sigmaY = 50

    【讨论】:

      【解决方案2】:

      我从 Alexander Smorkalov 那里得到了这个解决方案,它确实有效。只需更改 Imgproc.GaussianBlur(mGray, mGray, new Size (5,5), 2.2, 2); to Imgproc.GaussianBlur(mGray, mGray, new org.opencv.core.Size (5,5), 2.2, 2);

      【讨论】:

        猜你喜欢
        • 2014-03-20
        • 2012-09-12
        • 2019-12-12
        • 2017-06-06
        • 2012-07-11
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 2020-07-10
        相关资源
        最近更新 更多