主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WPF: WebカメラとQRコードの読み書きと

                
.NET Frameworkで動くアプリでWebカメラとQRコードを使うものを作りたい。というわけで,NETとQRで検索して出てくるものでニーズを満たすものを探す。Webカメラでやりたいのは動画表示とスナップショットを撮ること、QRコードは作成と読み込みの両方。


QR on .NET

http://www.codeproject.com/Questions/607356/HowplustopluscreateplusQRplusCodeplusencodeplusand
上記で紹介されているDLLを使えば、QRの作成ができる。でもドキュメントが全然見当たらないし、読み込みどうなの?

WebCam on .NET

Expression Encoder SDK
映像はOK。でもスナップ取れない。encoderというだけあって、もともと動画作成のためのもののようだ。WinFormsのコントロールでDrawtoBitmapなるメソッドを使って、コントロール内に表示される動画のスナップショットを取ろうと試みるも無理。背景色しかキャプチャされない。

WPF Webcam
映像表示しながらスナップとれるメソッドが用意されてるけど、スクリーンスナップ。Webカメラから出力される画像のスナップではない。

frmEE4WebCam
スナップを取ろうとして用意されてるメソッドでエラー

WebcamPlayer
http://blog.catenalogic.com/post/2009/01/08/WPF-Webcam-Control-part-2.aspx
映像もスナップもOK。あとはQRライブラリと組み合わせれば目的が達成できそう……




とGoogle検索で出てくるものを相手にしているうちに……
ZXing.NETを使うことで、QRコードもWebカメラも両方解決された
http://zxingnet.codeplex.com/
QRコードのデコード、エンコードをBitmapオブジェクトでできるライブラリ。Webカメラの映像表示、スナップ撮影を可能にするクラスをDLLに備えているわけではないが、WinFormsのサンプルコードにWebカメラを扱えるようにするコードがあるので、そのコードを流用すればいいだけ。WinFormsDemoというプロジェクトのWebCam.csというファイル。
WebCam.csにはGetCurrentImageというメソッドがあるが、これを実行すると実行中のプレビューが中断されてしまう。これを中断されずに続行させたければ、130行目あたりで実行されている下記のメソッドの後にプレビューの再開を命令するメソッドを実行すればよい。
// copy the frame to the clipboard
SendMessage(hHwnd, WM_CAP_COPY, 0, 0);

// resume previewing
SendMessage(hHwnd, WM_CAP_SET_PREVIEW, -1, 0);

んでこのWebCamクラスを、特にWPFではどう使うかというと、インスタンス作成してFormsのPictureBoxをContainerプロパティに渡して、このPictureBoxをWPFに移植してというふうに。
webCam = new WebCam();
PictureBox picBox = new PictureBox();
picBox.Width = 300;
picBox.Height = 300;
webCam.Container = picBox;
WindowsFormsHost host = new WindowsFormsHost();
host.Width = 300;
host.Height = 300;
host.Child = picBox;
wpfStackPanel.Children.Add(host);
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。