2012-05-04 24 views
5

Pytanie może wydawać się głupie dla tych, którzy mają doświadczenie w tworzeniu chmury, ale ze świata komputerów stacjonarnych nie potrafię samodzielnie rozwiązać problemu. Mam mnóstwo kodu przy użyciu opencv, niektóre z nich z api.OpenCV w chmurze

Pytanie, czy byłoby możliwe uruchomienie opencv na zdalnym serwerze (np. Heroku lub S3)?
Myślę, że jedynym sposobem na wysłanie jakiejkolwiek zależności (i jest dużo) w ramach kodu?

Rozwijam w Pythonie.

Dzięki!

EDIT:

Moja pierwsza myśl jest taka: https://github.com/jlengrand/FaceMovie

Zajmuję się małą aplikację w stanie automatycznie wykryć twarze na zdjęciach, centrum je i stworzyć film z nim. Ale jako inżynier komputerowy mam całą masę pomysłów na proste rzeczy, które można zrobić w chmurze.

Zdaję sobie sprawę, że przesyłanie danych może być ogromne w przypadku tego rodzaju rzeczy, a Ty możesz być lepiej niż ja, aby odpowiedzieć, czy takie rzeczy są możliwe, czy nie.

Zastanawiam się nad sposobami "zmniejszenia" tej ładowności, obniżając jakość zdjęć robiących zdjęcia już gdzieś w chmurze? (albumy picasa, ...)

Proszę dać mi znać, jestem otwarty na całkiem każdą możliwość.

+1

Czy budowanie webapp lub po prostu chcesz zrobić przetwarzanie w chmurze? – Sharun

+0

Cóż, podstawową ideą jest to, że chciałbym przenieść to, co mogę zrobić na moim komputerze w chmurze. To byłoby dla webappa – jlengrand

+0

chciałem zasugerować App Engine jako oparty na Pythonie i łatwy w użyciu, ale po prostu przyjrzałem się stronie instalacji opencv i myślę, że istnieje zależność od Numpy, która potrzebuje bibliotek C, które to appengine może nie zezwalać na przesyłanie. Jeśli twój kod nie używa żadnych numpy, to może być opcja. – Sharun

Odpowiedz

3

Jest to zdecydowanie możliwe. W przypadku serwisów internetowych w Pythonie, moim celem jest Piston. Stamtąd musisz wdrożyć go na jakimś serwerze internetowym. Jeśli wdrażasz na EC2, możesz skorzystać z bitami AMI preconfigured with Django and Apache. Oczywiście będziesz musiał zainstalować apt-get pakiety ubuntu opencv.

Teraz, biorąc pod uwagę to wszystko, może być lub nie mieć sensu robić tego "w chmurze" za pomocą usługi sieciowej. Musisz przesłać obraz, który chcesz przetworzyć, prawdopodobnie za pośrednictwem POST protokołu HTTP, więc zajmie to trochę czasu i przepustowości. W zależności od tego, co chcesz zwrócić, możesz również zwrócić wiele danych, które będą miały swój własny koszt. Czy możesz podzielić się z nami tym, co zrobi twoja aplikacja? Mógłbym zapewnić lepszą radę, gdybym wiedział, co próbujesz osiągnąć.

Jak zauważyłeś, pakiet ubuntu OpenCV jest nieaktualny. Jeśli potrzebujesz czegoś nowszego, znalazłem łatwy do zainstalowania ROS, który zawiera OpenCV 2.3 i jego zależności.

+0

Hej Nont, za komentarz. Rzecz w tym, że pakiet opencv dostępny w ubuntu jest przestarzały i naprawdę potrzebuję jakiejś nowszej wersji. Nadal mogę skompilować go na hoście i spróbować wysłać w ten czy inny sposób. – jlengrand

+0

masz absolutną rację. Jeśli potrzebujesz bardziej aktualnej wersji OpenCV, możesz skompilować ją samodzielnie. Prostszym sposobem, z którego korzystałem w przeszłości, jest instalacja ROS. (Zaktualizowałem swoją odpowiedź, aby uwzględnić to.) – nont

+0

Czyli twój kilof wybierał EC2? Jaki jest twój pomysł na heroku? – jlengrand

1

Powinieneś wypróbować Windows Azure. To jedyny PAAS (Cloud bez "serwerów"), który uruchamia c/C++.

Jeśli wymagane są pewne polecenia do zainstalowania, można użyć startup tasks.

Jeśli chodzi o strumień wideo, można otworzyć gniazdo (za pomocą punktu końcowego TCP) i przesłać wideo w ten sposób do lazurowej instancji. Jest to prawdopodobnie najbardziej efektywny sposób robienia tego, jeśli chcesz przetwarzać wideo w czasie rzeczywistym. Jeśli chcesz nagrać wideo i przesłać go, spójrz na użycie numeru blob storage. Następnie można użyć kolejki komunikatów, aby zasygnalizować pracownikowi, że czeka na to wideo do przetworzenia.

kredytowej: How do I install OpenCV on Windows Azure?