Hog DetectMultscale возвращает -215 утверждение не удалось в computeGradient в Android - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь использовать функции борова для моего проекта Android, который включает в себя обнаружения людей с помощью изображений с телефонов Android, используя следующие коды:

    hog = new HOGDescriptor();
    hog.setSVMDetector(HOGDescriptor.getDefaultPeopleDetector());
    img = new Mat();
    Utils.bitmapToMat(bitmap32, img);
    img2 = new Mat();
    img2.convertTo(img, CvType.CV_8U);

    MatOfRect found      = new MatOfRect();
    MatOfDouble foundDouble   = new MatOfDouble();

    //this line returns the error
    hog.detectMultiScale(img2, found, foundDouble, 0, new Size(8,8), new Size(32,32), 1.05, 2 );

Эти строки дают мне следующие ошибки:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65536, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.example.han.xvit/com.example.han.xvit.home_activity}: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.1.0) /build/master_pack-android/opencv/modules/objdetect/src/hog.cpp:243: error: (-215:Assertion failed) !img.empty() in function 'computeGradient'
]
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4179)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4222)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1581)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:163)
    at android.app.ActivityThread.main(ActivityThread.java:6238)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
 Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.1.0) /build/master_pack-android/opencv/modules/objdetect/src/hog.cpp:243: error: (-215:Assertion failed) !img.empty() in function 'computeGradient'
]
    at org.opencv.objdetect.HOGDescriptor.detectMultiScale_1(Native Method)
    at org.opencv.objdetect.HOGDescriptor.detectMultiScale(HOGDescriptor.java:393)
    at com.example.han.xvit.HomeFragment.onActivityResult(HomeFragment.java:156)
    at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:160)
    at android.app.Activity.dispatchActivityResult(Activity.java:7132)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4175)
        ... 9 more

Как видите, приложения возвращают -1 результат, а ошибка -215 подтверждает ошибку, вероятно, из-за того, что она не находит данные изображения.

Примечание:

  • Я искал несколько решений этой проблемы, которые могли быть вызваны типами изображений, полученными в Mat, для которых требовался тип изображения CV_8U
  • Функции bitmapToMat () уже преобразуют растровое изображение в тип изображения CV_8U, некоторые люди говорят,
  • Я попытался использовать img и img2 в deteMultiScale (), и результаты остались прежними
  • Не должно быть проблем с данными растрового изображения, поскольку я могу показать их в виде изображения, которое я использовал в другом коде

    Спасибо за помощь!

Редактировать: я использую их в качестве ссылки peopledetection1

peopledetection2

...