レビューメディア「ジグソー」

さあ始めるぞ!導入編

書くことがたくさんなので、

出だしはシンプルにさせていただきます!

 

さて、まずは第一回から第三回の分ですね...

これは事前に書いておいたので移植しますw

 

時間あるときにやっといてよかった...

 

 

おぉ、このエディタいい!

画像のプレビューって、いままで 表示されませんでしたよね...

地味に困ってましたw

 

今回からはラインをつけてみました!

さて、それでは開発環境の紹介です。



http://zigsow.jp/?m=zigsow&a=page_fh_own_item_detail&own_item_id=200279

 

もちろんこいつを使わせていただきます!

メーカー様のサイトよりスペックの方を...

 

■OS : Windows® 7 Professional 64ビット
■CPU :インテル® Core™ i7-3770 プロセッサー
■グラフィックス : NVIDIA® GeForce® GTX560/ 1GB
■メモリ : 8GB PC3-12800 DDR3-SDRAM
■HDD : 1TB Serial ATAII 7200rpm
■光学ドライブ : DVDスーパーマルチドライブ

こちらに

http://zigsow.jp/?m=zigsow&a=page_fh_own_item_detail&own_item_id=202318

 

このモニタを接続して開発を行っています。

作業ストレージに、

ビルド等する上で早いほうがいいので

 

http://zigsow.jp/?m=zigsow&a=page_fh_own_item_detail&own_item_id=202127

これを使用しています。

本当はSSDにそんなことやらせたら寿命が心配なのですが...

そんなこといってたらなんにも使えませんしね!

 

使用ソフトは

Microsoft Visual Studio 2012RC

こちらを使わせていただいています。

 

さて、次は開発環境の構築です。

電源をさし、USBをパソコンにさすと

いきなりパソコンが認識してくれませんでした。

なんてこったい!


とりあえず
http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx
こちらへ行きSDKをダウンロード

インストールを進めていくと、
自動的にドライバが入り認識してくれたようです!

ドライバの方も別途ダウンロードしていたのですが、
必要なかったようです。

ドライバが認識されると、安定したようです。
(認識されてない時は勝手に接続が外れたり接続されたりしていました。)

インストールが終わると、
次はDeveloperToolkitを入れろといわれました。

この辺は指示されたとおり順番に進めていくだけなので、割愛します。


その後Visual Studioをいれるのですが...
microsoftから最新の2012RCをインストールすると
ハードディスクを10Gも使うといわれましたw
しかもだいぶ時間かかったし...

私の貴重なSSDになんてことを!

 

寿命がこないことを祈ろう...

 

さて、次はDeveloper ToolKitに最初から入っている

サンプルプログラムをビルドしてみます!

 

 

RUNと書かれていないやつは、ビルドしないと実行できないようです。
今回はcolor basics wpf-vbというのをビルドしてみます。

installをクリック。


すると、出力先フォルダの選択になります。


出力先を選択してOKを押すと
出力したフォルダが自動的に開きます。


中にいろいろファイルが出来ていますね。
この中の~.slnというファイルを開きます。


すると


VBがインストールされている状態であれば
VBで開かれると思います。


デバッグを選択してデバッグ開始!

 
この白い四角は、画像編集ソフトで追加しただけですw
自動的にこうやってモザイクがかかっているわけではありません!
 
 


さて、次はカメラを使ったアプリを作ってみようということです。
zigsow様の内容を引用させていただきます!

流れとしては以下の流れで作成します。

プロジェクトの作成
XAMLによるメインウィンドウの記述
画像情報を表示するImageコントロールの追加
"Loaded"イベントのハンドラメソッドを設定
C#によるロジックの記述
usingディレクティブの追加
フィールドの追加
"Loaded"イベントハンドラの記述
"ColorFrameReady"イベントハンドラの記述


さ、さっぱりわからない...
とりあえずやってみよう。




Visual Studioを起動して
ファイル→新規作成→プロジェクト
以上のようにクリックします。



なんだか見ただけでいやになるダイアログが!
こんなに選択肢あったら。。。逆にわからんw

とりあえず今回はWPFアプリケーションを選択し
名前は「KinectCameraSample」とします。

場所は...適当なとこで!


右のソリューションエクスプローラタブの
先ほど作成したKinectCameraSampleを右クリック
そして「参照の追加」をクリックします。


ま、またなんかごちゃごちゃしてるぅううう!
これ、今は解説見よう見まねでやってるからあれだけど、
自分で作ろうと思ったらできるのだろうか...
既に心配になってきましたw

さて、「拡張子タブ」をクリックして
「Microsofg.Kinect」を選択してOKをおします。


雛形が出来てきたところで
プロジェクトを保存します。
ファイル→すべてを保存

ここまでで、やっと第一章プロジェクト作成が終了です。
なんて濃い内容なんだ...





さあ、第二章コントロールの追加です。

ーーーーーーーーーーーーーーーーーーーーーーーー
 WPFなどのUIフレームワークでは、
 ユーザからの入力を受け取ったり、
 出力を表示する部品を「コントロール」と呼びます。
 Visual C# を使い、WPFのコントロールを追加してみましょう。
 ここでは、"Image"コントロールを作成し、
 "Height"などのプロパティを設定する手順を紹介しますが、
 その他のコントロールでも同様の手順で追加できます。
ーーーーーーーーーーーーーーーーーーーーーーーー
ふむふむ。。。


mainwindow.xamlをダブルクリックして開く。


左のツールボックスをクリックして
次にコモンWPFコントロールをクリック
そして、imageというパーツをウインドウにドラッグアンドドロップ!



なんか出ましたね。

ここで少し悩みました。
講座では、出てきたやつを右クリックして
プロパティを選択
そして右のダイアログから設定しろとあるのですが

Visual Stuido2012では少し違うようです。


まず、imageをドロップしたら
そのまま右下にプロパティが出ます。

そこのレイアウトを展開すると
width heightなどの設定値が出ると思います。

そして、ここも
プロパティ名を右クリではなく
右のほうにある小さい四角をクリックします。



するとこのようなダイアログが出るので
これでリセットを選択です。


さらに、共通タブのstretchもリセットしておきます。
Uniformになっていれば、
拡大縮小時に比率を維持したまま拡大縮小が行われます。
今回は最初からUniformが選択されていました。


適当な名前をつけておきます。

これでコントロールの追加編が終わりました。
いやぁ。。。難しい!
何をやってるのかいまのところさっぱりなのですがw

 




次は第三章イベントハンドラの設定です。

---------------------------------------------
「ユーザがマウスをクリックした」とか、
「コントロールが初期化された」といった
各種イベントに対する処理は「イベントハンドラ」に記述します。
WPFのコントロールに対するイベントハンドラを記述するには、
以下の2つの手順が必要です。

今回作成するアプリケーションは、
メインウィンドウの初期化時にKinectなどの初期化を行います。
このためにメインウィンドウのWindowオブジェクトの
"Loaded"イベントを使います。
ここでは、"Loaded"イベントのハンドラメソッドとして
"WindowLoaded"を登録する手順を示します。

追加対象のXAMLファイルを開きます (ここでは "MainWindow.xaml" )
[ソリューションエクスプローラー]から"KinectCameraSample"の下にある
"MainWindow.xaml"をダブルクリックします。(すでに開いている場合は不要)
追加対象のコントロールを選択します。ここでは、Windowを選択します。
なお、デザインビュー上ではコントロールの選択が難しいことがあります。
この場合、以下の方法も試してみてください。
コントロールを選択した状態で[ESC]キーを押すと
親のコントロールが選択されます。
これを利用して、たとえば上記で追加したImageコントロールを選択し、
[ESC]を2回押すことで親の親(つまりWindow)を選択できます。
XAMLビュー上で該当するタグ(この場合は<Window>タグ)を
クリックすることでもコントロールを選択できます。
---------------------------------------------

ふむふむ。。。

とりあえずimageコントロールを選択した状態で
ESCキーを二回押す・・・


なるほど、種類がwindowになりましたね。

---------------------------------------------
[プロパティ]ビューの[イベント]タブを選択し、
[Loaded]に"WindowLoaded"を入力し、エンターを押します。
---------------------------------------------
これも非常にわかりにくいですね。


右のほうの雷のマークが[イベント]タブです。
これをクリックすると
下のほうに[Loaded]タブがあります。
そこに
[WindowLoaded]と入力しエンター

---------------------------------------------
XAMLにハンドラメソッド名が指定され、
コードビハインドにハンドラメソッドのひな形が作られます。
(ハンドラメソッドへの処理の追加は後程行います)
---------------------------------------------
ふむふむ、専門用語だらけでわけわからん。


ここに定義されたよ!ってことでしょう。
そして、実際の内容は後で書くよ。。。と

これでイベントハンドラの設定完了!




次はコードビハインドへの処理の追加。。。です

どうやらこれがラストセッションのようだ。。。
しかしラストが長いw

がんばりましょう!

----------------------------------------------
コードビハインドへの処理の追加は、
Visual Studio のソースエディタで行います。
追加対象のC#ファイルを開き、以下のように記述しましょう。
(ここでは "MainWindow.xaml.cs"に追加しています )
----------------------------------------------
ふむふむ

----------------------------------------------
usingディレクティブの追加
Kinect for Windows SDKを使った開発では、
Microsoft.Kinect.KinectSensorクラスなどを多用するので、
usingディレクティブを追加して、
"KinectSensor"で参照できるようにしておきましょう。
----------------------------------------------
えっと・・・はい・・・?

[using Microsoft.Kinect;]を宣言しろってことかな


とりあえず追記しておきました。


なんか段々説明雑になってきてないか...

//Kinectセンサーからの画像情報を受け取るバッファ
private byte[] pixelBuffer = null;

//画面に表示するビットマップ
private WriteableBitmap bmpBuffer = null;

とりあえずいわれるがままに上の内容を追加。

---------------------------------------------------

//Kinectセンサーの取得(Kinectセンサーやバッファ類の初期化)
KinectSensor kinect = KinectSensor.KinectSensors[0];

//カラーストリームの有効化
kinect.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);

//バッファの初期化
pixelBuffer = new byte[kinect.ColorStream.FramePixelDataLength];
bmpBuffer = new WriteableBitmap(kinect.ColorStream.FrameWidth, kinect.ColorStream.FrameHeight, 96, 96, PixelFormats.Bgr32, null);

rgbImage.Source = bmpBuffer;

//イベントハンドラの登録
kinect.ColorFrameReady += ColorImageReady;

//Kinectセンサーからのストリーム取得を開始
kinect.Start();
---------------------------------------------------------

またまたいわれるがままに
追記。

---------------------------------------------------------
//ColorFrameReadyイベントのハンドラ(画像情報を取得して描画)

private void ColorImageReady(object sender, ColorImageFrameReadyEventArgs e)
{
using (ColorImageFrame imageFrame = e.OpenColorImageFrame())
{
if (imageFrame != null)
{
//画像情報の幅・高さ取得*途中で変わらない想定
int frmWidth = imageFrame.Width;
int frmHeifht= imageFrame.Height;

//画像情報をバッファにコピー
imageFrame.CopyPixelDataTo(pixelBuffer);
//ビットマップに描画
Int32Rect src = new Int32Rect(0, 0, frmWidth, frmHeifht);
bmpBuffer.WritePixels(src, pixelBuffer, frmWidth * 4, 0):
}
}
}
-----------------------------------------------------------

さらにいわれるがまま追記。

これ、一個一個理解するの難しそうだぞ...
なんて駆け足なんだw

一応デバッグも成功して、
無事カメラは表示されました!
しかし...

理解するにはまだかなりかかりそうです。

 

今回は最初だったので、

Visual Studioでのプロジェクトの作成方法もしっかりかいておきました。

コードに関しては、今後どんどん長くなっていくので

どうかいていくかは考えることにします。

22人がこのレビューをCOOLしました!

コメント (0)

ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。

YouTube の動画を挿入

YouTube の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ニコニコ動画の動画を挿入

ニコニコ動画の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ZIGSOWリンク挿入

検索対象とキーワードを入力してください

    外部リンクを挿入

    リンク先の URL とタイトルを入力してください

    URL を正しく入力してください。

    画像を挿入(最大サイズ20MB)

    画像を選択してください

    ファイルサイズが20MBを超えています

    別の画像を追加

    ほかのユーザーのレビュー

    ZIGSOW にログイン

    ZIGSOW会員登録(無料)はこちらから