2017-02-20 2 views
2

Я хочу, чтобы обнаружить края от изображений с помощью Осторожного в Android, но она продолжает бросать эту ошибку:Android Java OpenCV осторожные бросает cvexception

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) 

Я не знаю, что вызывает ошибку, и я не нашел ответ в Интернете.

Вот код, который я использовал:

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(); 
     } 
    } 

Может кто-то помочь мне решить эту проблему?

Заранее благодарен!

ответ

0

решаемые его!

Я забыл добавить файлы в jnilibs.

+0

, какие файлы? @svenvdz –

1

Вы пытались проверить выход серы после применения cvtColor?

можно проверить также тип вашего изображения (средства называют getType())

+0

Когда я тестировал выход серых, это было бесцветное изображение. Тип изображения возвращает 0, используя 'gray.type()' – svenvdz

Смежные вопросы