![](/img/trans.png)
[英]OpenCV Error: Assertion failed (ksize.width > … for GaussianBlur
[英]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.