CMUcam3 Frame Grabber#
The CMUcam3 Frame Grabber is a simple utility that can be used to test your CMUcam3. Its primary purpose is to act as a terminal program similar to HyperTerminal or Minicom. It also allows you to view jpeg images returned from the camera. You need run the CMUcam2 Emulation firmware on the camera to use this program. The Frame Grabber requires that you install .NET version 2.0 or later which can be found on our software page. Unfortunately, the CMUcam3 Frame Grabber only works in Windows. The source can be found in the tools directory (called cc3_image_viewer). For Linux or Mac, please try using the CMUcam2GUI.
Aby uruchomić aplikację:
Kliknij dwukrotnie CMUcam3 Frame Grabber
Wybierz właściwy port COM z menu rozwijanego „Available COM Ports”
Kliknij przycisk „Connect”
Włącz swój CMUcam3 z firmware emulacji CMUcam2 (uruchom ponownie, jeśli jest już włączony)
Powinieneś zobaczyć tekst pojawiający się w oknie „Terminal Console”
Naciśnij „Grab Image”, aby zrobić zdjęcie
Oto opis pól na zakładce „Main” interfejsu:
Dostępne porty COM
To pokazuje listę portów szeregowych, które rozpoznaje Windows
Szybkość transmisji (baud)
Pozwala to zmienić szybkość transmisji, jeśli chcesz używać tego programu jako klienta terminala
Timeout
To ustawia limit czasu dla wszelkich odpowiedzi szeregowych, na które program może czekać
Zwykle nie trzeba tego zmieniać
Connect
Otwiera połączenie szeregowe
Disconnect
Zamyka połączenie szeregowe
Send
Ten przycisk prześle dowolny tekst, który wpisałeś w polu tekstowym znajdującym się po lewej stronie przycisku
Pole tekstowe automatycznie dodaje znak powrotu (return), więc samo kliknięcie „Send” powinno dać Ci odpowiedź ACK od CMUcam2
Domyślnie fokus znajduje się na polu tekstowym wejścia, więc możesz po prostu pisać i nacisnąć Enter, aby wysłać dane
CIF / QCIF
Te przyciski ustawiają rozdzielczość wyświetlanego obrazu
Domyślnie CMUcam3 wyśle obraz w niskiej rozdzielczości przeskalowany tak, aby wypełnić całe okno
Grab Image
To wysyła polecenie „SJ” (Send JPEG) do CMUcam3 i wyświetla wynik
Loop
To pole wyboru powoduje, że klient automatycznie naciska „Grab Frame” co „Refresh Interval” milisekund
Jeśli CMUcam3 nie może wytworzyć obrazu w określonym czasie, program zakończy się błędem przekroczenia limitu czasu
Jeśli tak się stanie, zwiększ Refresh Interval lub zmniejsz rozdzielczość obrazu
Refresh Interval
Ten parametr ustawia, jak często wysyłane jest polecenie „Grab Image”, gdy zaznaczone jest „Loop”
Stop
To zatrzymuje przechwytywanie zapętlonych obrazów
Zakładka „Settings” pozwala ustawić kilka typowych funkcji CMUcam3. Każdy naciśnięty przycisk po prostu przesyła odpowiednie polecenia CMUcam2 przez port szeregowy.
Oto opis pól na zakładce „Setting” interfejsu:
Low Resolution / High Resolution
Te przyciski przełączają między wysoką rozdzielczością CIF (352x288) a niską rozdzielczością QCIF (176x144)
Odpowiada to poleceniom szeregowym „HR 1” i „HR 0”
RGB / YCrCb
To wybiera natywny tryb pikseli kamery na RGB lub YCrCb
Odpowiada to poleceniom CMUcam2 „CR 18 44” lub „CR 18 36”
Down Sample
To ustawia stopień zmniejszania próbkowania realizowanego przez firmware
Odpowiada to „DS X Y”, gdzie X i Y to wartości ustawione w każdym polu wyboru
Window
To ustawia parametry okna wirtualnego dla kamery
Odpowiada to poleceniu CMUcam2 „VW x0 y0 x1 y1”
Servo Controller
Pozwala to ustawić pozycję serw dla 4 portów serw CMUcam3
To spowoduje ruch wszelkich serw podłączonych do CMUcam3
Odpowiada to poleceniu CMUcam2 „SV”
You can send any CMUcam2 command using the „Send” button and the text input box. For example, sending „GM” (Get Mean) returns the mean color of the image. To stop the streaming, simply click „Send” or press return. This program does not visualize most of the CMUcam2 commands. For visualization try using the CMUcam2GUI java program.
Rozwiązywanie problemów#
Dlaczego kamera zawiesza się, gdy zmieniam właściwości podczas przechwytywania obrazów w pętli?
Niestety CMUcam3 Frame Grabber nie jest wystarczająco inteligentny, aby naprawdę śledzić, co robisz. Więc jeśli zapętlasz obrazy i zmienisz rozdzielczość na większą, może wysłać kolejne polecenie „Grab Frame”, zanim obraz w wysokiej rozdzielczości zakończy transfer. Po kilkukrotnym wystąpieniu tego Frame Grabber traci synchronizację z kamerą, a połączenie szeregowe przekracza limit czasu. Zwykle jeśli naciśniesz „Stop” przed zmianą parametrów i upewnisz się, że ustawisz „Refresh Interval” na większą wartość dla obrazów w wysokiej rozdzielczości, nie otrzymasz błędów komunikacji ani przekroczenia limitu czasu.
Dlaczego nie mogę zapętlić obrazów w wysokiej rozdzielczości?
To ten sam problem, co opisany w poprzednim pytaniu. Jeśli „Refresh Interval” jest zbyt mały, kamera będzie żądać obrazów szybciej, niż jest w stanie je wytworzyć.