2016-07-22 3 views
0

У меня очень странная проблема при использовании гауссовской размытости Emgu CV. Размытие изображения отлично работает, когда я использую размер ядра в 1-3, но когда я использую больший размер, мой выход из приложения со следующим сообщением:Emgu CV «Emgu.CV.Util.CvException» при использовании GaussianBlur с размером> 3

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

Я работаю в Visual Studio, и он даже не дает мне стандартного всплывающего окна. Он просто выходит и бросает меня обратно в редактор.

Это код, который я пробовал:

CvInvoke.GaussianBlur(image, image, new Size(4, 4), 0, 0);

image._SmoothGaussian(4);

Оба примера дают одинаковые результаты.

ответ

0

Простой ответ: вы не можете использовать четное число для этого метода, вы можете использовать нечетное и положительное число (1,3,5 ..... и т. Д.), Это определяется оригиналом OpenCV libraries.

Параметры, необходимые для этого метода заключаются в следующем:

  • SRC - входное изображение;
  • dst - вывод изображения того же размера и типа, что и src.
  • ksize - Гауссовский размер ядра. ksize.width и ksize.height могут отличаться, но оба они должны быть положительными и нечетными. Или они могут быть ноль, а затем они вычисляются из сигмы *.
  • sigmaX - стандартное отклонение ядра Gaussian в направлении X
  • sigmaY - стандартное отклонение ядра Gaussian в направлении Y. если оба являются нулями сигмы, они вычисляются из ksize.width и ksize.height
  • borderType - пиксельный метод экстраполяции