Доброе утро всем.Переключение между камерой не работает после создания резьбы
Я разрабатываю приложение в среде Android, которое захватывает кадры из видеопотока, чтобы обработать их, а затем отображает обработанные кадры на экране. Это приложение, если устройство имеет две камеры, позволяет переключаться между передней камерой и задней камерой.
Переключение между камерами работало до тех пор, пока я не создал поток обработки фона (asynktask). Программа работает правильно с введением и исполнением потока, но если я попытаюсь сменить камеру, она сработает. В asynktask я выполняю только следующие операции: изменение размера кадра, вычисление некоторых точек на измененном кадре, масштабирование точек на основе размера исходного кадра, отображение исходного кадра на экране с пересчитанными точками, напечатанными на нем.
Если я пытаюсь сделать переключение, ошибка я получаю в LogCat является:
07-02 11:14:41.649: ERROR/AndroidRuntime(16778): FATAL EXCEPTION: pool-1-thread-3
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Caused by: CvException [org.opencv.core.CvException: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/imgproc/src/imgwarp.cpp:1723: error: (-215) ssize.area() > 0 in function void cv::resize(cv::InputArray, cv::OutputArray, cv::Size, double, double, int)
]
at org.opencv.imgproc.Imgproc.resize_0(Native Method)
at org.opencv.imgproc.Imgproc.resize(Imgproc.java:8461)
at com.micaela.myapp.MainActivity$ExtractFeaturesTask.scaleImage(MainActivity.java:764)
at com.micaela.myapp.MainActivity$ExtractFeaturesTask$1.handleMessage(MainActivity.java:678)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at com.micaela.myapp.MainActivity$ExtractFeaturesTask.doInBackground(MainActivity.java:736)
at com.micaela.myapp.MainActivity$ExtractFeaturesTask.doInBackground(MainActivity.java:649)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
Я только добавил элемент управления, чтобы проверить, что image.size.area()> 0 (ошибка, которая отображается в logcat). Теперь, если я переключу камеру, приложение не сбой, а только блоки (как замороженные). Очень странно, что, когда он замерзает, если я снова нажимаю кнопку переключения, переключение начинает работать. – user140888
Похоже, он начинает много работать, когда вы впервые нажимаете переключатель. Прикрепите пару Log.i для отладки и посмотрите, что-нибудь петли или начнется преждевременно. – SonicWind