Soy un principiante en openCV
Así que por favor discúlpeme si mi pregunta es tonta. Básicamente estoy tratando de aplicar gussianBlur
en OPENCV pero está mostrando un extraño error que no entiendo por qué?
Código:
Mat tmp = new Mat (bitmap.getWidth(), bitmap.getHeight(), CvType.CV_8UC4);
Utils.bitmapToMat(bitmap, tmp);
//Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_RGB2HSV_FULL);
Imgproc.GaussianBlur(tmp,tmp,new org.opencv.core.Size(2,2),0,0);
Utils.matToBitmap(tmp,bitmap);
imgView.setImageBitmap(null);
imgView.setImageBitmap(bitmap);
Error:
CvException [org.opencv.core.CvException: cv::Exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/imgproc/src/smooth.cpp:816: error: (-215) ksize.width > 0 && ksize.width % 2 == 1 && ksize.height > 0 && ksize.height % 2 == 1 in function cv::Ptr<cv::FilterEngine> cv::createGaussianFilter(int, cv::Size, double, double, int)]
at org.opencv.imgproc.Imgproc.GaussianBlur_1(Native Method)
at org.opencv.imgproc.Imgproc.GaussianBlur(Imgproc.java:533)
at opengl.community.myopencvexample.MainActivity$3.onClick(MainActivity.java:82)
at android.view.View.performClick(View.java:4478)
at android.view.View$PerformClick.run(View.java:18698)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
at dalvik.system.NativeStart.main(Native Method)
Documentación del método GaussianBlur
: https://docs.opencv.org/java/2.4.9/org/opencv/imgproc/Imgproc.html#GaussianBlur(org.opencv.core.Mat,%20org.opencv.core.Mat, % 20org.opencv.core.Size,% 20double,% 20double)
public static void (src, estera DST, Tamaño ksize, doble Sigmax, doble sigmaY) desenfoque gaussiano
ksize - el tamaño del núcleo de Gauss. ksize.width y ksize.height pueden ser diferentes, pero ambos deben ser positivos y extraña . O bien, pueden ser cero y después de que se calcula a partir de Sigma *.
Usted está de paso 2, 2 para el tamaño del núcleo, que no son impares.
Usar algo como esto:
Imgproc.GaussianBlur(tmp, tmp, new Size(3, 3), 0, 0);