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.
Para iniciar a aplicação:
Faça duplo clique em CMUcam3 Frame Grabber
Selecione a porta COM correta no menu pendente «Available COM Ports»
Clique no botão «Connect»
Ligue a sua CMUcam3 a correr o Firmware de Emulação da CMUcam2 (reinicie se já estiver ligada)
Deverá ver texto a aparecer na janela «Terminal Console»
Prima «Grab Image» para tirar uma fotografia
Aqui está uma descrição dos campos do separador «Main» da interface:
Available COM Ports
Isto mostra uma lista das portas série que o Windows reconhece
Baud Rate
Isto permite-lhe alterar o baud rate se quiser utilizar este programa como cliente de terminal
Timeout
Isto define o timeout para quaisquer respostas série pelas quais o programa possa estar a aguardar
Isto normalmente não precisa de ser alterado
Connect
Abre uma ligação série
Disconnect
Fecha a ligação série
Send
Este botão transmitirá qualquer texto que tenha escrito na caixa de texto localizada à esquerda do botão
A caixa de texto adiciona automaticamente um caractere de return, pelo que basta clicar em «Send» para obter uma resposta ACK da CMUcam2
Por predefinição, o foco está na caixa de texto de entrada, pelo que pode simplesmente escrever e premir return para enviar dados
CIF / QCIF
Estes botões definem a resolução da imagem que está a ser apresentada
Por predefinição, a CMUcam3 enviará uma imagem de baixa resolução que é escalada para preencher toda a janela
Grab Image
Isto envia o comando «SJ» (Send JPEG) à CMUcam3 e apresenta o resultado
Loop
Esta caixa de verificação faz com que o cliente prima automaticamente «Grab Frame» a cada «Refresh Interval» milissegundos
Se a CMUcam3 não conseguir produzir uma imagem no tempo especificado, o programa expirará com um erro
Se isto acontecer, aumente o Refresh Interval ou diminua a resolução da imagem
Refresh Interval
Este parâmetro define com que frequência o comando «Grab Image» é enviado quando «Loop» está marcado
Stop
Isto impede que as imagens em loop sejam capturadas
O separador «Settings» permite-lhe definir algumas funcionalidades comuns da CMUcam3. Cada botão que prime está simplesmente a transmitir os comandos correspondentes da CMUcam2 através da porta série.
Aqui está uma descrição dos campos do separador «Setting» da interface:
Low Resolution / High Resolution
Estes botões alternam entre Alta Resolução CIF (352x288) ou Baixa Resolução QCIF (176x144)
Isto corresponde aos comandos série «HR 1» e «HR 0»
RGB / YCrCb
Isto seleciona o modo de pixel nativo da câmara para RGB ou YCrCb
Isto corresponde aos comandos «CR 18 44» ou «CR 18 36» da CMUcam2
Down Sample
Isto define a quantidade de down sampling baseado no firmware
Isto corresponde a «DS X Y» onde X e Y são os valores definidos em cada caixa de seleção
Window
Isto define os parâmetros de janela virtual para a câmara
Isto corresponde ao comando «VW x0 y0 x1 y1» da CMUcam2
Servo Controller
Isto permite-lhe definir a posição do servo das 4 portas de servo da CMUcam3
Isto fará com que quaisquer servos ligados à CMUcam3 se movam
Isto corresponde ao comando «SV» da CMUcam2
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.
Resolução de Problemas#
Porque é que a câmara bloqueia quando altero propriedades enquanto capturo imagens em loop?
Infelizmente, o CMUcam3 Frame Grabber não é suficientemente inteligente para acompanhar realmente o que está a fazer. Por isso, se estiver a fazer loop de imagens e alterar a resolução para algo maior, então poderá enviar o próximo comando «Grab Frame» antes de a imagem de alta resolução ter terminado a transferência. Depois de isto acontecer algumas vezes, o Frame Grabber fica dessincronizado com a câmara e a série expira. Normalmente, se premir «Stop» antes de alterar parâmetros, e se certificar de que define o «Refresh Interval» para um valor maior para imagens de alta resolução, então não terá erros de comunicação ou de timeout.
Porque é que não consigo fazer loop com imagens de alta resolução?
Este é o mesmo problema descrito na pergunta anterior. Se o «Refresh Interval» for demasiado pequeno, então a câmara pedirá imagens mais depressa do que consegue produzi-las.