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.

애플리케이션을 시작하려면:

  • CMUcam3 Frame Grabber를 더블 클릭하십시오

  • “Available COM Ports” 드롭다운 메뉴에서 올바른 COM 포트를 선택하십시오

  • “Connect” 버튼을 클릭하십시오

  • CMUcam2 에뮬레이션 펌웨어를 실행하는 CMUcam3의 전원을 켜십시오(이미 켜져 있으면 재부팅)

  • “Terminal Console” 창에 텍스트가 나타나는 것을 볼 수 있습니다

  • 사진을 찍으려면 “Grab Image”를 누르십시오

다음은 인터페이스의 “Main” 탭에 있는 필드에 대한 설명입니다:

  • 사용 가능한 COM 포트

    • 이것은 Windows가 인식하는 시리얼 포트 목록을 표시합니다

  • 보드 레이트

    • 이를 통해 이 프로그램을 터미널 클라이언트로 사용하려는 경우 보드 레이트를 변경할 수 있습니다

  • 타임아웃

    • 이것은 프로그램이 기다리고 있을 수 있는 모든 시리얼 응답에 대한 타임아웃을 설정합니다

      • 이것은 일반적으로 변경할 필요가 없습니다

  • 연결

    • 시리얼 연결을 엽니다

  • 연결 해제

    • 시리얼 연결을 닫습니다

  • 전송

    • 이 버튼은 버튼 왼쪽에 위치한 텍스트 상자에 입력한 모든 텍스트를 전송합니다

    • 텍스트 상자가 자동으로 return 문자를 추가하므로, “Send”를 클릭하기만 하면 CMUcam2에서 ACK 응답을 받을 수 있습니다

    • 기본적으로 포커스는 입력 텍스트 상자에 있으므로, 그냥 입력하고 return을 눌러 데이터를 전송할 수 있습니다

  • CIF / QCIF

    • 이 버튼들은 표시되는 이미지의 해상도를 설정합니다

    • 기본적으로 CMUcam3는 전체 창을 채우도록 스케일링된 저해상도 이미지를 전송합니다

  • 이미지 캡처

    • 이것은 “SJ”(Send JPEG) 명령을 CMUcam3에 보내고 결과를 표시합니다

  • 반복(Loop)

    • 이 체크박스는 클라이언트가 “Refresh Interval” 밀리초마다 자동으로 “Grab Frame”을 누르게 합니다

    • CMUcam3가 지정된 시간 내에 이미지를 생성할 수 없으면, 프로그램이 오류와 함께 타임아웃됩니다

      • 이런 일이 발생하면, 새로 고침 간격을 늘리거나 이미지 해상도를 낮추십시오

  • 새로 고침 간격

    • 이 매개변수는 “Loop”가 체크되었을 때 “Grab Image” 명령이 얼마나 자주 전송되는지 설정합니다

  • 정지

    • 이것은 반복되는 이미지가 캡처되는 것을 중지합니다

“Settings” 탭에서 몇 가지 일반적인 CMUcam3 기능을 설정할 수 있습니다. 누르는 각 버튼은 단순히 해당 CMUcam2 명령을 시리얼 포트를 통해 전송합니다.

다음은 인터페이스의 “Setting” 탭에 있는 필드에 대한 설명입니다:

  • 저해상도 / 고해상도

    • 이 버튼들은 고해상도 CIF(352x288)와 저해상도 QCIF(176x144) 사이를 전환합니다

    • 이것은 “HR 1” 및 “HR 0” 시리얼 명령에 해당합니다

  • RGB / YCrCb

    • 이것은 카메라의 네이티브 픽셀 모드를 RGB 또는 YCrCb로 선택합니다

    • 이것은 “CR 18 44” 또는 “CR 18 36” CMUcam2 명령에 해당합니다

  • Down Sample

    • 이것은 펌웨어 기반 다운 샘플링 양을 설정합니다

    • 이것은 X와 Y가 각 선택 상자에 설정된 값인 “DS X Y”에 해당합니다

  • 윈도우

    • 이것은 카메라의 가상 윈도우 매개변수를 설정합니다

    • 이것은 “VW x0 y0 x1 y1” CMUcam2 명령에 해당합니다

  • 서보 컨트롤러

    • 이를 통해 4개의 CMUcam3 서보 포트의 서보 위치를 설정할 수 있습니다

    • 이것은 CMUcam3에 연결된 모든 서보를 움직이게 합니다

    • 이것은 “SV” 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.

문제 해결#

루프에서 이미지를 캡처하는 동안 속성을 변경하면 카메라가 멈추는 이유는 무엇입니까?

  • 불행히도, CMUcam3 Frame Grabber는 여러분이 무엇을 하고 있는지 실제로 추적할 만큼 똑똑하지 않습니다. 그래서 이미지를 반복하다가 해상도를 더 큰 것으로 변경하면, 고해상도 이미지 전송이 완료되기 전에 다음 “Grab Frame” 명령을 보낼 수 있습니다. 이런 일이 몇 번 발생하면, Frame Grabber가 카메라와 동기화가 어긋나고 시리얼이 타임아웃됩니다. 일반적으로 매개변수를 변경하기 전에 “Stop”을 누르고, 고해상도 이미지의 경우 “Refresh Interval”을 더 큰 값으로 설정하면, 통신 또는 타임아웃 오류가 발생하지 않습니다.

고해상도 이미지로 반복할 수 없는 이유는 무엇입니까?

  • 이것은 이전 질문에서 설명한 것과 동일한 문제입니다. “Refresh Interval”이 너무 작으면, 카메라가 이미지를 생성할 수 있는 것보다 더 빨리 요청합니다.