I have a problem with GaborFilter in Android. I try to implement this filter because CannyFilter is too weak for my purposes. I want to use it to get edges with great accuracy from the image provided by the user but when I call this method I get problems with src.type. Does my image is in wrong format?
GaborFilter implementation:
private Bitmap gaborFilter(Bitmap bitmap){
Mat tmp = new Mat();
Utils.bitmapToMat(bitmap, tmp);
Mat edges = new Mat(tmp.size(), CvType.CV_32F);
//tmp.convertTo(tmp, CvType.CV_8U);
//Imgproc.cvtColor(tmp, edges, Imgproc.COLOR_RGB2GRAY, 4);
double sigma = 15, theta = 4.71, lambda = 50, gamma = 0.6;
Mat kernel = Imgproc.getGaborKernel(new Size(3,3),sigma,theta,lambda,gamma);
Imgproc.filter2D(tmp, edges, CvType.CV_32F, kernel);
Bitmap resultBitmap = Bitmap.createBitmap(tmp.cols(), tmp.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(dst, resultBitmap);
return resultBitmap;
}
Error that I received:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=11, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:42 flg=0x1 }} to activity {com.example.janekxyz.teest/com.example.janekxyz.teest.MainActivity}: CvException [org.opencv.core.CvException: /build/master_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp:98: error: (-215) src.type() == CV_8UC1 || src.type() == CV_8UC3 || src.type() == CV_8UC4 in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean)]
Any thoughts how can I make this code run?
P.S. I'm new to OpenCV.