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 所辨識的序列埠清單

  • 鮑率

    • 如果您想將此程式當作終端機用戶端使用,這讓您能夠變更鮑率

  • 逾時

    • 這會為程式可能正在等待的任何序列回覆設定逾時時間

      • 這通常不需要變更

  • 連線

    • 開啟序列連線

  • 中斷連線

    • 關閉序列連線

  • 傳送

    • 這個按鈕會傳送您在按鈕左側的文字方塊中所輸入的任何文字

    • 文字方塊會自動加入一個換行字元,因此只要按一下「Send」,就應該能從 CMUcam2 得到一個 ACK 回應

    • 焦點預設在輸入文字方塊上,因此您只需輸入並按下 Enter 鍵即可傳送資料

  • CIF / QCIF

    • 這些按鈕設定所顯示影像的解析度

    • CMUcam3 預設會傳送一張經過縮放以填滿整個視窗的低解析度影像

  • 擷取影像

    • 這會向 CMUcam3 傳送「SJ」(Send JPEG)命令並顯示結果

  • 迴圈

    • 這個核取方塊會讓用戶端每隔「Refresh Interval」毫秒自動按下一次「Grab Frame」

    • 如果 CMUcam3 無法在指定時間內產生影像,程式將會逾時並顯示錯誤

      • 如果發生這種情況,請增加重新整理間隔,或降低影像解析度

  • 重新整理間隔

    • 此參數設定當「Loop」被勾選時,「Grab Image」命令的傳送頻率

  • 停止

    • 這會停止擷取迴圈中的影像

「Settings」分頁讓您可以設定幾項常見的 CMUcam3 功能。您所按下的每個按鈕,都只是透過序列埠傳送對應的 CMUcam2 命令而已。

以下是介面「Setting」頁籤上各欄位的說明:

  • 低解析度 / 高解析度

    • 這些按鈕在高解析度 CIF(352x288)與低解析度 QCIF(176x144)之間切換

    • 這對應於序列命令「HR 1」與「HR 0」

  • RGB / YCrCb

    • 這會將相機的原生像素模式選為 RGB 或 YCrCb

    • 這對應於 CMUcam2 命令「CR 18 44」或「CR 18 36」

  • 降取樣

    • 這會設定以韌體為基礎的降取樣量

    • 這對應於「DS X Y」,其中 X 與 Y 是在各選取方塊中所設定的值

  • 視窗

    • 這會為相機設定虛擬視窗參數

    • 這對應於 CMUcam2 命令「VW x0 y0 x1 y1」

  • 伺服控制器

    • 這讓您能夠設定 4 個 CMUcam3 伺服埠的伺服機位置

    • 這會導致任何連接至 CMUcam3 的伺服機移動

    • 這對應於 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.

疑難排解#

為什麼當我在迴圈中擷取影像時變更屬性,相機會凍結?

  • 可惜的是,CMUcam3 Frame Grabber 並不夠聰明,無法真正追蹤您正在做什麼。因此,如果您正在迴圈擷取影像,並將解析度變更為較大的值,那麼它可能會在高解析度影像傳輸完成之前就送出下一個「Grab Frame」命令。在這種情況發生幾次之後,Frame Grabber 就會與相機失去同步,序列連線便會逾時。通常,如果您在變更參數之前先按「Stop」,並確保為高解析度影像將「Refresh Interval」設為較大的值,那麼您就不會遇到通訊或逾時錯誤。

為什麼我無法以高解析度影像進行迴圈?

  • 這與前一個問題所述的問題相同。如果「Refresh Interval」太小,那麼相機請求影像的速度就會快過它產生影像的速度。