В Android 10, как сделать постобработку видеобуфера, не касаясь фреймворка или компонентов OpenMAX - PullRequest
0 голосов
/ 17 октября 2019

Я должен сделать некоторую постобработку на декодированных буферах видео (каждый кадр) перед отправкой его в Surface Flinger для рендеринга. После окончания проекта, так как я не могу изменить структуру и не могу изменить предоставленные поставщиком слои OpenMAX, как я могу добавить свою постобработку? Может кто-нибудь указать на аналогичную реализацию или какие-либо указатели дизайна будут полезны

1 Ответ

0 голосов
/ 21 октября 2019

Одним из подходов к этому было бы использование OpenCV, который позволит вам обрабатывать каждый кадр перед его отображением.

Например, метод обратного вызова 'onCameraFrame' дает вам доступ к кадру из вводаисточник, в данном случае камера, перед тем, как ее рендерить.

Несколько предостережений:

  • Вы должны убедиться, что обработка, которую вы выполняете, соответствует времени, которое у вас есть междуРамка. Если у вас есть проблема с этим, одним из обходных путей, который может работать в зависимости от вашего варианта использования, может быть тяжелая обработка каждого n-го кадра и использование одного и того же результата для любых промежуточных кадров.
  • OpenCV для Androidдокументация по-прежнему основана на Eclispe. Если вы хотите работать с Android Studio, то вам нужно будет провести онлайн-чтение и поиск руководств и советов, а также выпустить обходные пути. В настоящее время их доступно больше, поэтому кажется, что это лучше, чем было в прошлом.

Хороший простой пример, на который следует обратить внимание, - это обнаружение цветовых клубов, которое обнаруживает объект или шарик определенного цвета. каждый кадр: https://github.com/opencv/opencv/tree/master/samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect

...