2012-05-04 14 views
5

Die Frage mag für diejenigen, die mit der Cloud-Entwicklung vertraut sind, dumm erscheinen, aber aus der Desktop-Welt kann ich die Lösung nicht genau herausfinden. Ich habe eine Menge Code mit opencv, einige davon mit einem API.OpenCV in der Cloud

Frage ist, wäre es möglich, opencv läuft auf einem Remote-Server (sagen wir Heroku oder S3)?
Ich denke, der einzige Weg wäre, irgendeine Abhängigkeit (und es gibt viele) innerhalb des Codes zu senden?

Ich entwickle in Python.

Danke!

EDIT:

Mein allererster Gedanke ist dieser: https://github.com/jlengrand/FaceMovie

Ich bin eine kleine Anwendung automatisch in der Lage zu entwickeln Gesichter in Bildern zu erkennen, zentrieren sie und erstellen Sie einen Film aus ihm heraus. Aber als Computeringenieur habe ich eine Menge Ideen von einfachen Dingen, die in der Cloud gemacht werden können.

Ich weiß, dass die Übertragung von Daten mit dieser Art von Dingen groß sein kann, und Sie können besser als ich sein, um zu antworten, ob solche Sachen möglich sind oder nicht.

Ich habe über Möglichkeiten nachgedacht, diese Nutzlast "zu reduzieren", indem ich die Bildqualität von Aufnahmen von irgendwo in der Cloud schon reduziert habe? (Picasa Alben,...)

Lassen Sie mich wissen, ich bin offen für jede Möglichkeit in der Tat.

+1

Bauen Sie eine Webapp oder sie nur in der Cloud geschehen soll Verarbeitung? – Sharun

+0

Nun, die Grundidee ist, dass ich übertragen möchte, was ich auf meinem Computer in der Cloud tun kann. Also würde dies für eine Webapp sein – jlengrand

+0

Ich würde vorschlagen, App Engine als seine Python-basierte und einfach zu bedienen, aber ich habe nur einen Blick auf die opencv Installationsseite und ich denke, es gibt eine Abhängigkeit von Numpy, die C-Bibliotheken, die appengine benötigt Möglicherweise können Sie nicht hochladen. Wenn Ihr Code keine Anrufe verwendet, können Sie eine Option wählen. – Sharun

Antwort

3

Es ist definitiv möglich. Für Webservices in Python ist Piston mein Go-to. Von dort müssen Sie es auf einem Webserver bereitstellen. Wenn Sie auf EC2 bereitstellen, können Sie die bitami AMI preconfigured with Django and Apache. verwenden. Natürlich müssen Sie die opencv ubuntu-Pakete apt-get installieren.

Nun, angesichts all dessen könnte es sinnvoll sein oder auch nicht, dies "in der Cloud" mit einem Webservice zu tun. Sie müssen das Bild, das Sie verarbeiten möchten, möglicherweise über einen HTTP-POST übertragen, so dass es einige Zeit und Bandbreite braucht. Abhängig von dem, was Sie zurückgeben möchten, haben Sie möglicherweise auch viele Daten zurück, die ihre eigenen Kosten haben. Können Sie uns mitteilen, was Ihre Bewerbung tun wird? Ich könnte Ihnen einen besseren Rat geben, wenn ich wüsste, was Sie erreichen wollten.

Wie Sie festgestellt haben, ist das OpenCV-Paket von ubuntu veraltet. Wenn Sie etwas aktuelleres benötigen, habe ich gefunden, dass es einfach zu installieren ROS ist, die OpenCV 2.3 und seine Abhängigkeiten enthält.

+0

Hey Nont, thqnks für Ihren Kommentar. Das ist, das opencv-Paket, das in ubuntu verfügbar ist, ist veraltet, und ich brauche wirklich eine neuere Version. Ich kann es trotzdem auf dem Host kompilieren und versuche es auf die eine oder andere Art zu senden. – jlengrand

+0

du hast absolut recht. Wenn Sie eine aktuellere Version von OpenCV benötigen, können Sie diese selbst kompilieren. Ein einfacherer Weg, den ich in der Vergangenheit benutzt habe, ist ROS zu installieren. (Ich habe meine Antwort aktualisiert, um dies zu berücksichtigen.) – nont

+0

Also würde Ihre Wahl EC2 auswählen? Was ist deine Vorstellung von Heroku? – jlengrand

1

Sie sollten Windows Azure versuchen. Es ist das einzige PAAS (Cloud ohne "Server"), auf dem c/C++ läuft.

Wenn zur Installation einige Befehle erforderlich sind, können Sie startup tasks verwenden.

Wie beim Videostream können Sie einen Socket öffnen (über einen TCP-Endpunkt) und das Video auf diese Weise auf eine azurblaue Instanz streamen. Das ist wahrscheinlich die effizienteste Methode, wenn Sie Echtzeit-Videoverarbeitung benötigen. Wenn Sie das Video aufzeichnen und hochladen möchten, schauen Sie unter blob storage nach. Sie können dann eine Nachrichtenwarteschlange verwenden, um dem Mitarbeiter zu signalisieren, dass ein Video auf die Verarbeitung wartet.

Kredit: How do I install OpenCV on Windows Azure?