【.NET Gadgeteer】 NETMF 4.3 R2 Beta で Serial Camera Module は動作するか?

.NET Gadgeteer の .NET Micro Framework 4.3 R2 Beta 対応の、Serial Camera Module の使い方を紹介します。
※Camera Module の使い方は こちらの記事

Serial Camera、NETMF 4.3 R2 Beta でも動作します。ただしパフォーマンスはあまりよろしくないような・・・。


先にコードを紹介します。

using Gadgeteer.Modules.GHIElectronics;
using Microsoft.SPOT;
using GT = Gadgeteer;
using GTM = Gadgeteer.Modules;
 
namespace SerCamera43Test
{
    public partial class Program
    {
        // This method is run when the mainboard is powered up or reset.   
        void ProgramStarted()
        {
            var initTimer = new GT.Timer(3000, GT.Timer.BehaviorType.RunOnce);
            initTimer.Tick += initTimer_Tick;
            initTimer.Start();
 
            // Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
            Debug.Print("Program Started");
        }
 
        void initTimer_Tick(GT.Timer timer)
        {
            lock (this)
            {
                serialCameraL2.ImageResolution = SerialCameraL2.Resolution.QVGA;
                serialCameraL2.StartStreaming();
            }
 
            var capTimer = new GT.Timer(100);
            capTimer.Tick += capTimer_Tick;
            capTimer.Start();
        }
 
        void capTimer_Tick(GT.Timer timer)
        {
            if (serialCameraL2.NewImageReady)
            {
                lock (this)
                {
                    var bitmap = serialCameraL2.GetImage();
                    serialCameraL2.StopStreaming();
 
                    displayTE35.SimpleGraphics.DisplayImage(bitmap, 0, 0);
 
                    serialCameraL2.StartStreaming();
                    PulseDebugLED();
                }
            }
        }
    }
}

処理の流れは以下の通り。

  1. Serial Camera の StartStreaming メソッドを呼び出します。これでカメラが画像を撮り始めます。
  2. タイマーで NewImageReady プロパティを確認。これでカメラ側で 1枚文の画像が用意できたことが分かります。
  3. GetImage メソッドで Bitmap 形式で画像を取り込みます。
  4. StopStreaming メソッドで撮影を停止します。これをしないと次の画像の取得に失敗して、真っ黒な画像になることがあります。また、GetImage との順番が逆になっても画像は取れないようです。
  5. ディスプレイに画像を表示。今回はこの部分はお手軽に SimpleGraphics を使っています。
  6. StartStreaming メソッドで撮影を再開します。

念のために起動後に 3秒程度の待ち時間を入れています。撮影のタイマーは 100ミリ秒程度でもよさそうです。(NewImageReady が立っていなければ抜ければいいので)
StopStreaming / StartStreaming の代わりに PauseStreaming / ResumeStreaming を使用すると、GetImage する画像が二度目以降は変わりません。ちゃんと撮れるのは最初の 1枚だけでした。


使用したボード/モジュールは以下の通り。

WP_20141227_002

パフォーマンスはよくありません。毎秒1枚程度でしょうか。ただ Camera Module よりも画質はいいように思うので、用途に応じて使い分けるといいかもしれません。

広告
カテゴリー: .NET Micro Framework, IoT タグ: , , パーマリンク

【.NET Gadgeteer】 NETMF 4.3 R2 Beta で Serial Camera Module は動作するか? への1件のフィードバック

  1. ピンバック: 【.NET Gadgeteer】 NETMF 4.3 R2 Beta で Camera Module は動作するか? | 技術との戯れ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中