2012-05-04 15 views
5

La pregunta puede parecer estúpida a las personas con experiencia en el desarrollo de la nube, pero viniendo del mundo de los escritorios, no puedo encontrar la solución por mi cuenta. Tengo un montón de código usando opencv, algunas de ellas con una API.OpenCV en la nube

La pregunta es, ¿sería posible ejecutar opencv en un servidor remoto (digamos heroku o S3)?
Creo que la única manera sería enviar cualquier dependencia (y hay muchas) dentro del código?

Estoy desarrollando en Python.

Gracias!

EDIT:

Mi primera idea es la siguiente: https://github.com/jlengrand/FaceMovie

Estoy desarrollando una pequeña aplicación automática capaz de detectar los rostros en las imágenes, centrarlos y crear una película fuera de él. Pero como ingeniero informático, tengo un montón de ideas de cosas simples que se pueden hacer en la nube.

Me doy cuenta de que la transferencia de datos puede ser enorme con este tipo de cosas, y usted puede estar mejor ubicado que yo para responder si tales cosas son posibles o no.

Estaba pensando en formas de "reducir" esta carga, al reducir la calidad de las imágenes de tomar imágenes desde algún lugar en la nube ya? (álbumes de picasa,..)

Avísame, estoy abierto a cualquier posibilidad de hecho.

+1

¿Está construyendo una aplicación web o hacer lo que desea transformación efectuada en la nube? – Sharun

+0

Bueno, la idea básica es que me gustaría transferir lo que puedo hacer en mi computadora en la nube. Así que esto sería para una aplicación web – jlengrand

+0

. Sugeriría que App Engine está basado en Python y es fácil de usar, pero eché un vistazo a la página de instalación de opencv y creo que hay una dependencia de Numpy que necesita bibliotecas C que appengine puede que no te permita subir. Si su código no está utilizando ninguna llamada numpy appengine tal vez una opción. – Sharun

Respuesta

3

Definitivamente es posible. Para los servicios web en Python, Piston es mi lugar de visita. A partir de ahí, debe implementarlo en un servidor web de algún tipo. Si está implementando en EC2, puede usar el bitami AMI preconfigured with Django and Apache. Por supuesto, necesitará instalar apt-get para los paquetes de opencv ubuntu.

Ahora, dado todo eso, podría o no tener sentido hacer esto "en la nube" con un servicio web. Tendrá que transferir la imagen que desea procesar, probablemente a través de un HTTP POST, por lo que le llevará algo de tiempo y ancho de banda. Dependiendo de lo que quiera devolver, es posible que también tenga muchos datos que vuelvan, lo que tendrá su propio costo. ¿Puedes compartir con nosotros lo que hará tu aplicación? Podría darte un mejor consejo si supiera lo que intentabas lograr.

Como ha señalado, el paquete de ubuntu OpenCV está desactualizado. Si necesita algo más reciente, he encontrado que es fácil de instalar ROS que incluye OpenCV 2.3 y sus dependencias.

+0

Hey Nont, gracias por su comentario. La cosa es que el paquete opencv disponible en Ubuntu es obsoleto, y realmente necesito una versión más nueva. Todavía puedo compilarlo en el host y tratar de enviarlo de una manera u otra. – jlengrand

+0

tienes toda la razón. Si necesita una versión más actualizada de OpenCV, puede compilarla usted mismo. Una forma más fácil, que he usado en el pasado, es instalar ROS. (He actualizado mi respuesta para incluir esto.) – nont

+0

¿Entonces su elección elegiría EC2? ¿Cuál es tu idea sobre heroku? – jlengrand

1

Debe probar Windows Azure. Es el único PAAS (Cloud sin "servidores") que ejecuta c/C++.

Si se requieren algunos comandos para instalarlo, puede usar startup tasks.

En cuanto a la transmisión de video, puede abrir un socket (usando un punto final TCP) y transmitir el video a una instancia azul de esa manera. Esa es probablemente la forma más eficiente de hacerlo si desea un procesamiento de video en tiempo real. Si quieres grabar el video y subirlo, mira usando blob storage. Luego puede usar una cola de mensajes para indicarle al trabajador que hay un video esperando a ser procesado.

de crédito: How do I install OpenCV on Windows Azure?

Cuestiones relacionadas