2013-06-01 3 views
0

В настоящее время я участвую в проекте, где мы выполнили распознавание и классификацию объектов компьютерного зрения с использованием python. Необходимо использовать фотографии, снятые с телефона Android (фотографии должны быть автоматически отправлены с android на python). На самом деле я не знаю, как связать оба приложения (андроид и питон) вместе. Я думал об использовании TCP Server, но я новичок в программировании сокетов и не знаю, как и с чего начать.Программирование сокетов Tcp/IP в python

Любой может помочь?

ответ

0

Android дает вам возможность подключаться через HTTP.

http://developer.android.com/guide/topics/connectivity/index.html

Так что я бы, вероятно, пойти с реализацией типа REST

https://en.wikipedia.org/wiki/Representational_state_transfer

http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

Вот учебник для Android и ОТДОХНУТЬ

http://www.majidkhosravi.com/android-rest/

Но вы имеете дело с картинками. Вот ТАК, говоря об этом.

POSTing image from Android to WCF Rest Service

На стороне Python у вас есть несколько вариантов, но основные из них я хотел бы рассмотреть:

Twisted (или, может быть, Торнадо), если вы хотите асинхронный.

http://twistedmatrix.com/trac/wiki/WebDevelopmentWithTwisted

http://zenmachine.wordpress.com/web-services-and-twisted/

колба для Synch.

http://flask-restful.readthedocs.org/en/latest/quickstart.html

Может быть Nginx/Apache + Django

http://django-rest-framework.org/

SO отправить о Python и ОТДОХНУТЬ

Recommendations of Python REST (web services) framework?

Если вы хотите реализовать это на уровне сокетов, эта книга будет отличным ресурсом:

http://www.amazon.com/Foundations-Python-Network-Programming-Goerzen/dp/1590593715

Надеюсь, что это поможет вам найти несколько направлений для изучения. Ответ

0

пуф является хороший обзор, но вот некоторые замечания по различным вариантам:

Вариант 1: ваше Android получить снимок и сделать POST HTTP в приложение Python работает рамки, такие как Django. Это должно быть 1 строка кода на Android и только несколько строк кода на Python (вокруг вашего существующего кода).

Положительный момент заключается в том, что низкоуровневый «Клей» написан для вас, и он легко масштабируется. Недостатком является то, что HTTP имеет некоторые накладные расходы.

Вариант 2. Попросите свой Android использовать собственный протокол TCP для пользовательского приложения TCP.

Это больше работы, поэтому вам следует избегать его, если вам это не нужно. Он будет более эффективным и будет иметь более низкую задержку, особенно если вы отправляете несколько изображений. Ответ также может быть намного меньше без HTTP-заголовков.

В любом случае вам не нужно отправлять JPEG, вы можете отправить любой желаемый формат (есть компромисс между сжатием на Android и размером файла).

Я думал об использовании TCP Server, но я новичок в программировании сокетов и не знаю, как и с чего начать.

Начало, где все остальные начали - много читали и много играли. Вы можете найти множество возможностей для программирования Socket в Python в Интернете. Пройдите через учебные пособия и начните изменять их, чтобы посмотреть, как они работают. Читайте на самом TCP/IP - есть много темных углов (Nagel, фрагментация, медленный старт), которые могут повлиять на то, как вы пишете приложение, когда вы достигаете низкого уровня.

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