Emgu CV" Emgu.CV.Util.CvException"当使用尺寸> 3的GaussianBlur时

时间:2016-07-22 10:16:07

标签: c# opencv emgucv

使用Emgu CV的高斯模糊功能时,我遇到了一个非常奇怪的问题。当我使用1-3的内核大小时,模糊图像可以正常工作,但是当我使用更大的大小时,我的应用程序会退出并显示以下消息:

public class SecondActivity extends Activity { int value; SharedPreferences preferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); preferences = PreferenceManager.getDefaultSharedPreferences(SecondActivity.this); value = preferences.getInt("value", 0); System.out.println("SecondActivity.onCreate() of i ----- " + value); for (int i = 1; i <= value; i++) { Button myButton = new Button(this); myButton.setText("Add Me"); LinearLayout ll = (LinearLayout) findViewById(R.id.layout); LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp.gravity = Gravity.CENTER; myButton.setLayoutParams(lp); ll.addView(myButton, lp); } } }

我在Visual Studio工作,它甚至没有给我标准的异常弹出窗口。它只是退出并把我扔回编辑。

这是我尝试过的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:id="@+id/layout" android:orientation="vertical" android:layout_height="match_parent" tools:context="com.example.sample.Second" > </LinearLayout>

Exception thrown: 'Emgu.CV.Util.CvException' in Emgu.CV.World.dll

两个例子都给出了相同的结果。

2 个答案:

答案 0 :(得分:0)

http://www.emgu.com/wiki/files/3.0.0/document/html/4d4fa4cc-0d74-ab37-10ee-2189d35beb81.htm

如果您查看文档,则可以查看大小是否必须为奇数。 &#34; 4&#34;是一个偶数。

例如: CvInvoke.GaussianBlur(input,outputGaussian,new System.Drawing.Size(15,15),3);

答案 1 :(得分:0)

简单的答案是你不能在这个方法中使用偶数,你可能只使用奇数和正数(1,3,5 ......等),这是由原始{{3}定义的}。

此方法所需的参数如下:

  • src - 输入图像;
  • dst - 输出与大小和类型相同的图像 SRC。
  • ksize - 高斯内核大小。 ksize.width和ksize.height可能会有所不同,但它们都必须是正数和奇数。或者,他们可以 零,然后它们是从sigma *。
  • 计算出来的
  • sigmaX - X方向的高斯核标准偏差
  • sigmaY - Y方向的高斯核标准差。如果两个sigma都是零,则它们是从ksize.width和ksize.height计算的。
  • borderType - 像素外推 方法