0

我目前参与了一个项目,我们使用 python 执行了一些计算机视觉对象识别和分类。必须使用从安卓手机拍摄的照片(照片应该从安卓自动发送到python)。我实际上不知道应该如何将两个应用程序(android 和 python)连接在一起。我想过使用 TCP Server,但我是套接字编程的新手,不知道如何以及从哪里开始。

任何人都可以帮忙吗?

4

2 回答 2

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和REST的教程

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

但是你正在处理图片。这是一个谈论这个的SO。

将图像从 Android 发布到 WCF Rest 服务

在 Python 方面,您有多种选择,但我会考虑的主要选择:

如果您想要异步,请使用 Twisted(或者可能是 Tornado)。

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

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

用于同步的烧瓶。

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

也许 Nginx/Apache + Django

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

所以关于 Python 和 REST 的帖子

Python REST(Web 服务)框架的推荐?

如果您想在套接字级别实现这一点,这本书将是一个很好的资源:

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

希望这有助于为您提供一些探索方向。

于 2013-06-01T01:07:06.317 回答
0

poof 的回答是一个很好的概述,但这里有一些关于各种选项的注释:

选项 1:让您的 Android 获取图片并向运行 Django 等框架的 Python 应用程序执行 HTTP POST。它应该是 Android 上的 1 行代码,而 Python 上只有几行代码(围绕您现有的代码)。

好处是低级的“胶水”是为你编写的,它很容易扩展。缺点是 HTTP 有一些开销。

选项 2:让您的 Android 将自定义 TCP 协议与自定义 TCP 应用程序通信。

这是更多的工作,所以你应该避免它,除非你需要它。它将更高效并且延迟更低,尤其是在您发送多张图片时。如果没有 HTTP 标头,响应也可以小得多。

在任一选项中,您都不必发送 JPEG,您可以发送任何您想要的自定义格式(在 Android 上的压缩和文件大小之间需要权衡)。

我想过使用 TCP Server,但我是套接字编程的新手,不知道如何以及从哪里开始。

从其他人开始的地方开始——通过大量阅读和大量玩耍。您可以在网络上找到大量关于 Python 中 Socket 编程的介绍。浏览教程,然后开始修改它们以查看它们是如何工作的。阅读 TCP/IP 本身——有很多黑暗的角落(Nagel、碎片、慢启动)会影响你在低级别时编写应用程序的方式。

于 2013-06-01T03:06:45.310 回答