2012-11-06 2 views
1

Я пытаюсь разработать приложение, в котором платформа Beaglebone захватывает видеоизображения с подключенной к нему камеры, а затем отправляет их (через интернет-сокет) в приложение для Android, которое показывает приложение видеоизображения.Интерфейс видеокамеры между beaglebone и android

Я прочитал, что openCV может быть очень хорошим вариантом для захвата изображений с камеры, но тогда я не уверен, как изображения могут быть отправлены через сокет.

С другой стороны, я думаю, что видеоизображения, полученные приложением Android, могут обрабатываться простыми изображениями. Имея это в виду, я думаю, что я могу обновить изображение каждую секунду или около того.

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

Заранее спасибо, Гас.

ответ

0

Люди в OpenROV сделали что-то подобное, как вы сказали. Вместо использования пользовательского приложения для Android, которое, безусловно, возможно, они просто использовали веб-браузер для отображения захваченных изображений.

https://github.com/OpenROV/openrov-software

Это приложение использует OpenCV для выполнения захвата и анализа, приложения Node.js передавать данные через socket.io в веб-браузер и веб-клиента для отображения видео. Описание архитектуры о том, как это будет приведено здесь:

http://www.youtube.com/watch?v=uvnAYDxbDUo

Вы также можете посмотреть на работы что-то вроде MJPG-стример:

http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1051&context=cpesp

+0

Большое спасибо за информацию. Из того, что я проверил, они используют приложение java для передачи данных, как я могу это сделать с помощью программы C (передающей информацию через сокет)? И любая идея о программировании на стороне клиента? Кроме того, знаете ли вы, что можно сделать то же самое с помощью Angstrom distro ?. Я спрашиваю вас, так как я не мог найти ссылку, чтобы связаться с ними. – gus

+0

Это на самом деле приложение JavaScript, которое отличается от языка Java. Они используют OpenCV для самого видеозахвата. – Jadon

+0

Конечно, можно сделать то же самое в Angstrom (который поставляется с установленными библиотеками OpenCV - вы можете увидеть мою демонстрацию BeagleStache) (http://beagleboard.org/project/stache).Также возможно сделать все это только в C, но вам нужно быть знакомым с программированием сокетов. Для вас может быть полезен пример [потоковой передачи на Android с использованием RTP] (http://stackoverflow.com/questions/11452865/displaying-live-udp-or-rtp-stream-multicast-on-android). – Jadon

0

Обратите внимание, что отображающее видеопотока в виде набора изображений может иметь большое влияние на производительность. Например, если вы не будете осторожны с тем, как вы кодируете каждый кадр, вы можете увеличить вдвое трафик между двумя системами. ARGB принимает 32 бита для кодирования пикселя, YUV принимает 12 бит, поэтому даже учет сжатия кадра, вы все равно удваиваете количество хранилищ на кадр. Кроме того, рендеринг ARGB намного, намного медленнее, чем рендеринг YUV, так как большинство телефонов Android действительно имеют оптимизированную по аппаратным средствам YUV-рендеринг (так как в графическом процессоре можно напрямую разбить YUV в памяти дисплея). Кроме того, рендеринг отдельных кадров по мере того, как подход обычно делает sone, делает простой способ и создает растровое изображение на холсте, которое работает, если вы довольствуетесь чем-то размером порядка 10-15 кадров в секунду, но никогда не можете получить до 60 кадров в секунду, и можете до максимума (не поддерживается) 30 кадров в секунду только на очень немногих телефонах.

Если у вас есть аппаратный MPEG-кодер на плате Beaglebone, вы должны использовать его для кодирования и потоковой передачи видео. Это позволит вам напрямую передавать поток MPEG на стандартный мультимедийный плеер Android для рендеринга. Конечно, использование стандартного медиаплеера не позволит вам обрабатывать видеопоток в режиме реального времени, поэтому в зависимости от вашего сценария это может быть не для вас.

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

  • Нет связанных вопросов^_^