title: Android Java Opencv canny throws cvexception
body: <p>I want to detect edges from images using Canny in Android, but it keeps throwing this error:</p>
  
  <pre><code>E/cv::error(): OpenCV Error: Assertion failed (_dx.type() == CV_16SC1 || _dx.type() == CV_16SC3) in void cv::Canny(cv::InputArray, cv::InputArray, cv::OutputArray, double, double, bool), file /build/master_pack-android/opencv/modules/imgproc/src/canny.cpp, line 959
      E/org.opencv.imgproc: imgproc::Canny_11() caught cv::Exception: /build/master_pack-android/opencv/modules/imgproc/src/canny.cpp:959: error: (-215) _dx.type() == CV_16SC1 || _dx.type() == CV_16SC3 in function void cv::Canny(cv::InputArray, cv::InputArray, cv::OutputArray, double, double, bool)
      W/System.err: CvException [org.opencv.core.CvException: cv::Exception: /build/master_pack-android/opencv/modules/imgproc/src/canny.cpp:959: error: (-215) _dx.type() == CV_16SC1 || _dx.type() == CV_16SC3 in function void cv::Canny(cv::InputArray, cv::InputArray, cv::OutputArray, double, double, bool)
      W/System.err: ]
      W/System.err:     at org.opencv.imgproc.Imgproc.Canny_1(Native Method)
      W/System.err:     at org.opencv.imgproc.Imgproc.Canny(Imgproc.java:984)
      W/System.err:     at app.android.opencvproject.OpenCVText.detectContours(OpenCVText.java:185)
      W/System.err:     at app.android.opencvproject.CameraPreview$1$1.run(CameraPreview.java:428)
      W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
      W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
      W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
      W/System.err:     at java.lang.Thread.run(Thread.java:818)
  </code></pre>
  
  <p>I don't know what causes the error and I did not find any answer on the internet.</p>
  
  <p>Here is the code I used:</p>
  
  <pre><code>public void detectContours(Bitmap bitmap){
          try{
              Mat img = new Mat();
              Utils.bitmapToMat(bitmap, img);
  
              Mat gray = new Mat(img.size(), CvType.CV_8UC1);
              Imgproc.cvtColor(img, gray, Imgproc.COLOR_RGB2GRAY, 4);
              Imgproc.Canny(gray, gray, 80, 100);
  
              Bitmap outputBitmap = Bitmap.createBitmap(gray.cols(), gray.rows(), Bitmap.Config.ARGB_8888);
              Utils.matToBitmap(gray, outputBitmap);
              MediaStore.Images.Media.insertImage(context.getContentResolver(), outputBitmap, "Opencv" , "Hello");
              Log.d("OPENCV", "Image stored in your gallery");
          }catch (Exception e){
              e.printStackTrace();
          }
      }
  </code></pre>
  
  <p>Can someone help me to solve this problem?</p>
  
  <p>Thanks in advance!</p>