niedziela, 31 lipca 2011

Zakładanie konta na Spotify

Spotify to usługa pozwalająca słuchać zasobów muzycznych (25 tys. albumów) prosto z chmury. Niestety nie jest ona dostępna dla polskich użytkowników. Jednak wykazując trochę inicjatywy możemy założyć konto w serwisie.
Wykorzystamy do rejestracji stronę web proxy.

1. Przechodzimy na stronę: http://www.daveproxy.co.uk/ i w polu Enter URL wprowadzamy: https://www.spotify.com/en/get-started/
2. Potwierdzamy przyciskiem GO
3. Po prawej stronie u góry strony Spotify klikamy na Log in a następnie na Sign Up
4. Wypełniamy formularz rejestracyjny podająć kod pocztowy z UK. (np. WC2H 7LA)
5. Po zakończonej rejestracji pobieramy program ze strony spotify i logujemy się otrzymanymi danymi.

Konto w taki sposób możemy testować przez dwa tygodnie. Program wie, że znajdujemy się poza granicą Zjednoczonego Królestwa i blokuje dostęp (płatne konta nie mają tego obostrzenia). Przed tym czasem należy ponownie zalogować się poprzez daveproxy na stronę spotify aby przedłużyć możliwość korzystania na kolejne dwa tygodnie.

Niestety nie ma możliwości zapłaty za płatne konto za pomocą PayPala bądź karty kredytowej zarejestrowanych na polski adres.
Jeśli ktoś zna sposób na wykupienie płatnego konta niech się nim podzieli.

Przeszukiwanie pikseli na obrazie

Detekcję twarzy rozpocząłem od wyszukania pierwszego niezerowego piksela na binarnym obrazie różnicowym.



Aby odczytać pojedynczy piksel musiałem przekształcić obraz z formatu Mat na IplImage i użyć metody cvGetReal2D. Iteruję po pikselu poczynając od górnego lewego rogu. Kiedy wartość jest większa od zera zwracam ten punkt (warto zwrócić uwagę na odwrotną kolejność współrzędnych w cvGetReal2D a w konstruktorze Point).
Na wszelki wypadek gdyby wszystkie piksele były czarne zwracam na końcu wartość Point(0,0)

sobota, 30 lipca 2011

Detekcja ruchu za pomocą obrazu różnicowego

Aby odnaleźć twarz na obrazie możemy wykorzystać również analizę obrazu różnicowego. Idea takiej operacji jest bardzo prosta. Pobieramy ramkę obrazu (dla wygody zmieniamy ją na odcienie szarości) i porównujemy z następną.
Z pomocą przychodzi nam metoda absdiff(ramka1, ramka2, wyjście). Po działaniu absdiff otrzymujemy obraz gdzie jasny kolor oznacza różnice.
Podczas operacji może przeszkadzać nam szum na obrazie wideo. Aby go usunąć możemy zastosować binaryzację, erozję i dylatację obrazu wynikowego.
Poniżej kod prezentujący daną metodę oraz przykład działania.




Detekcja twarzy za pomocą kaskady Haara

Poszukując informacji o detekcji twarzy znalazłem ciekawy film obrazujący działanie wyszukiwania twarzy metodą Viola Jones. Na filmie widać jak części obrazu są porównywane do zapisanych integral images. Widać również że jeden sukces wyszukiwania nie wystarcza i przeprowadzanych jest kilka przebiegów aby potwierdzić czy znaleziono twarz.

OpenCV Face Detection: Visualized from Adam Harvey on Vimeo.


piątek, 29 lipca 2011

Publikowanie fragmentów kodu w Bloggerze

Poszukując prostej metody opublikowani kodu źródłowego na blogu odnalazłem interesującą a za razem prostą metodę.

1. Odwiedzamy stronę https://gist.github.com.
2. Wklejamy nasz kod źródłowy i podajemy nazwę pliku bądź sami wybieramy język kodowania.
3. Klikamy Create Public Gist
4. Pod przyciskiem show embed znajdziemy kod który musimy wkleić do naszego posta.
5. Aby wszystko wyświetliło się prawidłowo w opcjach publikacji na bloggerze wybieramy opcję "Interpretuj wpisany kod HTML"

Poniżej przykład kodu wyświetlony za pomocą Gista

Konfiguracja OpenCV 2.3 w Microsoft Visual Studio 2010 pod systemem Windows 7 x64

Po wielu próbach i nieudanych eksperymentach postanowiłem opisać sposób na skonfigurowanie nowego OpenCV (wersja 2.3 Lipiec 2011) pod MS Visual Studio 2010 i systemem Windows 7 x64.
Główną zaletą wersji 2.3 jest działająca obsługa większej ilości kamer. Myślę że jest to wystarczający powód aby się z nią zapoznać.

Instalacja biblioteki
1. Kierujemy się na stronę http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.3/ i pobieramy plik OpenCV-2.3.0-win-superpack.exe.

2. Pobrany plik jest tylko spakowanym archiwum. Podczas instalacji pyta o lokalizację do zapisu. Wprowadzamy zatem ścieżkę C:\Program Files\
Bibliotek zostanie zainstalowana w folderze C:\Program Files\OpenCV2.3
(Można zainstalować bibliotekę również w innej lokalizacji. Należy wtedy w kolejnych krokach odpowiednio zmienić wprowadzany adres).

3. Kolejnym krokiem jest dodanie lokalizacji plików dll do zmiennej systemowej Path.
Uruchamiamy Zaawansowane ustawienia systemu (prawym na Komputer -> Właściwości a następnie Zaawansowane ustawienia systemu po lewej stronie okna).
W nowo otwartym oknie wybieramy Zaawansowane -> Zmienne środowiskowe...


W dolnej części okna Zmienne środowiskowe wybieramy zmienną Path i kikamy przycisk Edytuj...


Na końcu ciągu Wartość zmiennej dopisujemy: ;C:\Program Files\OpenCV2.3\build\bin\;C:\Program Files\OpenCV2.3\build\x64\vc10\bin\
Następnie potwierdzamy zmiany i wychodzimy z ustawień. W tym momencie należy uruchomić ponownie komputer.

Stworzenie projektu w VS
1. Wybierz File -> New -> Project...
2. Po lewej stronie rozwijamy Installed Templates -> Other Languages -> Visual C++ -> Win32 i wybieramy Win32 Console Application


3. Wprowadzamy nazwę projektu i zatwierdzamy przyciskiem OK.
4. W następnym oknie klikamy Finish

Konfiguracja VS
1. Wybieramy Ustawienia projektu (menu Project -> Proporties)


2. Po prawej stronie okna wybieramy Configuration Manager...


3. W oknie Managera konfiguracji rozwijamy listę Active solution platform i wybieramy


4.  Z listy Type or select the new platform wybieramy x64. Nie zmieniając pozostałych własności klikamy OK.


5. Zamykamy również okienko Menagera konfiguracji upewniwszy się że Active solution platform wskazuje na x64.
6. W menu po lewej stronie rozwijamy Configuration Proporties -> C/C++ -> General


7. W Additional Include Directories wklejamy: C:\Program Files\OpenCV2.3\build\include;C:\Program Files\OpenCV2.3\build\include\opencv;%(AdditionalIncludeDirectories)


8. Rozwijamy Configuration Proporties -> Linker -> Input


9. Czyścimy zawartość Additional Dependencies i wklejamy tam "C:\Program Files\OpenCV2.3\build\x64\vc10\lib\opencv_core230d.lib";"C:\Program Files\OpenCV2.3\build\x64\vc10\lib\opencv_highgui230d.lib";"C:\Program Files\OpenCV2.3\build\x64\vc10\lib\opencv_video230d.lib";"C:\Program Files\OpenCV2.3\build\x64\vc10\lib\opencv_ml230d.lib";"C:\Program Files\OpenCV2.3\build\x64\vc10\lib\opencv_legacy230d.lib";"C:\Program Files\OpenCV2.3\build\x64\vc10\lib\opencv_imgproc230d.lib";%(AdditionalDependencies)


10. Klikamy Zastosuj i OK

Uruchomienie kodu
W edytorze kodu wklejamy poniższy kod i wciskamy F5 (Start debugging)