Witam wszystkich.
Dziś pochwalę się swoim programem, który napisałem na zaliczenie z przedmiotu Grafika i komunikacja człowiek-komputer. Wcale nie twierdzę, że jest to jakiś cud informatyki, ale osobiście jestem zadowolony ze swojej pracy.
Założenia:
Stworzyć program, który za pomocą kamery internetowej będzie potrafił wyszukać i śledzić dwa markery. Ponadto program powinien wypisywać podstawowe dane o znalezionych obiektach: kolor (RGB), współrzędne X i Y, kąt pochylenia względem siebie etc.
Osiągnięcia:
Projekt udało się doprowadzić do końca, pracowałem nad nim przez około miesiąc przy dużym zaangażowaniu. Zrealizowałem podstawowe założenia, kod obsługi kamery zaczerpnąłem z darmowego źródła ze strony www.codenstuff.com,
gdzie autor pozwolił korzystać z jego rozwiązań.
Aplikację napisałem w środowisku Microsoft Visual Basic 2005 Express Edition i sprawdziłem na kilku komputerach z systemem Windows XP. Do działania wymaga zainstalowanego oprogramowania .NET Framework w wersji 2.0 lub nowszej. Aby uruchomić aplikację należy kliknąć w skrót o nazwie „seeker.lnk”.
Opis okna programu:
1 – po włączeniu aplikacji w tym polu tekstowym pojawia się informacja o sterowniku(?) kamery
2 – podczas działania programu wyświetlane są informacje o markerach i otoczeniu
3 – na początku przed kliknięciem przycisku START można tym suwakiem poprawić wykrywalność markerów, należy dobrać doświadczalnie przy różnych warunkach oświetleniowych, najlepsze wyniki uzyskiwałem przy wartościach od -20 do 10
4 – przyciski: Start – uruchamia kamerę i zaczyna szukać markerów; Reset – szuka markerów od nowa, Restart – aplikacja uruchamia się ponownie z domyślnymi opcjami.
Miałem problemy odnośnie kodu obsługi kamery którego nie mogę zrozumieć. Otóż po uruchomieniu kamery obraz ukazuje się w kontrolce PictureBox1(lewy obraz), jednak na tym obrazie nie mogłem wykonywać żadnych operacji (pobranie piksela i sprawdzenie koloru, zaznaczenie obszaru) tak jakby PictureBox1 nic nie zawierał, dlatego nie mogąc sobie poradzić z tym problemem postanowiłem go obejść. Ogólnie mówiąc program robi screenshota okna programu, wycina ramkę PictureBox1 z klatką obrazu z kamery i zapisuje w zmiennej, którą następnie załadowuje do kontrolki PictureBox2(prawy obraz). Takim sposobem w ramce PictureBox2 mam obraz z kamery na którym mogę przeprowadzać potrzebne operacje.
Mrugające czarne elementy na ekranie, które były przydatne podczas pracy nad aplikacją, postanowiłem pozostawić widoczne, ponieważ można na bieżąco śledzić postępy programu podczas pracy. Niestety nie uporałem się z problemem zróżnicowanego oświetlenia, najlepsze efekty uzyskałem przy sztucznym oświetleniu, gdzie otoczenie ma ciepłe kolory (jak najniższa składowa blue) oraz ogólna jasność pomieszczenia jest umiarkowana. Podczas prób, należy suwakiem (3) ustawić odpowiednią wartość tak, aby przy pierwszym przebiegu szukania znalazło któryś z punktów. Jeśli żaden z markerów nie zostanie wykryty za pierwszym razem, należy nacisnąć przycisk restart i ustawić inną wartość. Proszę również zwrócić uwagę na wielkość kwadratów wokół znalezionych punktów (kwadraty pokazują się, gdy markery znikną z pola widzenia). Im większy kwadrat tym lepiej.
Aha, najważniejsze - program reaguje na kolor niebieski, najlepiej nakleić sobie dwa kółeczka na kartkę A4 i przeprowadzać próby. Program zaczyna "śledzić", dopiero wtedy, kiedy znajdzie dwa obiekty.
Mam nadzieję, że aplikacja uruchomi się na każdym komputerze i nie będzie sprawiała problemów.
Nie mniej jednak nie odpowiadam za jakiekolwiek szkody wywołane ewentualnym wadliwym działaniem programu.
Fajne? Ranking DIY