HOME

工藝 太郎
ニックネーム 工藝 太郎
自己紹介 kinectを勉強中
  • やってみよう!Kinectアプリ開発 - 第5回 深度情報の利用 2012-06-29 18:31 kinection.jp管理人 前回はKinect™の最大の特長である骨格情報の利用を紹介しました。今回は前回説明を飛ばした深度情報について、Kinect™ for Windows® SDKからの利用方法を紹介します。 続きを見る
    3件の質問スレッド
    • depMaskBuffer 工藝 太郎 2014-11-19 14:22 上に書いてあるプログラムを打って、エラーは出なかったのですが、

      depMaskBuffer[clrIdx ⋇ 4] = 255; の部分に

      「IndexOutOfRangeExceptionはハンドルされませんでした。」 ”インデックスが配列の境界外です。”と出ました。
      どうすればいいのか教えてください。
      トラブルシューティングのヒント:
      リストの最大インデックスが、リストサイズよりも小さくなることを確認します。
      インデックスが負の数でないことを確認します。
      データ列名が適切であることを確認します。
      この例外に関する一般的なヘルプを参照します。
      と書いてありました。
    • マスク画像の拡大縮小のプログラミング のぎむ 2012-08-22 09:17 自分のペースでこちらのkinect開発を進めています!

      前回で行った「第四回の骨格情報」のおまけで頭の傾きをマスク画像に反映させるプログラムを習いました。

      そして、今回その続きからプログラミングをするようになっています。なんとか、今回の第五回目も動作させる事が出来て一安心でした。

      そこで、前回までの復習に、傾きを加えずに拡大縮小させてみようと、第四回目のおまけ前のソースで試してみました。

      しかし、Item1などがエラーが出てしまい、(Mtrix4を追加したら消えたのですが)どこを変えれば動作するのかわかりません。

      どうかご教授いただけたらと思います。よろしくお願いします。
      4件のコメント (すべて表示)
      • のぎむ 某支配人さん、ありがとうございます。

        教えて頂いたおかげで、
        Item1のエラーは消えました。
        しかし、
        //頭の位置を保存
        results.add(head.Position);
        の部分が消えません。

        ListをList<Tuple<SkeletonPoint, Matrix4>> に変更したので、

        // 頭の位置を保存
        results.Add(Tuple.Create(head.Position, 〇〇));

        という形になると思うのですが、Item2を要求され、エラーが出てしまいました。

        実際のサンプルは、Item2に傾きが入っていた為、

        // 頭の位置を保存
        results.Add(Tuple.Create(head.Position, headMtrx));

        となっていたのですが、今回は傾きを入れないのでheadMtrxは出てきていません。
        当然、入力するとエラーがでます。

        // 頭の位置を保存
        results.Add(Tuple.Create(head.Position,   ここ ));
        ここにはなにを入れたらよいのでしょうか?


        度々、申し訳ありません。
        2012-09-09 12:24
      • 某支配人 私も理解出来てるつもりは無い部分なのですが、
        Item1が無いってことなら

        // RGBカメラの画像情報に対して、顔の位置にマスクを上書きして描画する  // 追加 第4回
            private void fillBitmap(KinectSensor kinect,ColorImageFrame imgFrame,
                        List<SkeletonPoint> headList)
            {



        // RGBカメラの画像情報に対して、顔の位置にマスクを上書きして描画する  // 追加 第4回
            private void fillBitmap(KinectSensor kinect, ColorImageFrame imgFrame,
                        List<Tuple<SkeletonPoint, Matrix4>> headList)  //
            {

        このあたりが怪しいと思います。
        合わせて

        private List<Tuple<SkeletonPoint, Matrix4>> getHeadPoints(SkeletonFrame skelFrame)   // 変更

        ここも候補となります。

        きちんとしたアドバイスにならなくてごめんなさいネ
        2012-08-28 23:45
      • のぎむ 返答遅れてしまい、申し訳ありません。

        某支配人さん、丁寧な回答して下さりありがとうございます。
        某支配人さんのレビューを参考にさせて頂いていたので、回答を頂いて驚きました。

        拝見して改めて認識したのですが、
        "Itemの定義が含まれていない"
        とエラーが出てしまいます。


        第四回のP2までに作成したソースで打ち込んだ為、
        必要な文が足りていない事に気づき、
        自分なりに解釈してMatrix4がxとyだけでなくzも取得する構文なのではと考え、
        「処理結果のリストを空状態で作成」(第四回のP3、上段)
        var results = new List<Tuple<SkeletonPoint, Matrix4>>();
        を追加しました。

        しかし、打ち込んでみたところ次々とエラーが出力され、
        すべてのエラーを消す為に頭の向きを取得まで打つ始末。

        Itemのエラーを無くすにはMatrix4を追記する必要があるのでしょうか?

        その場合、
        //頭の位置・向きを保存(第四回のP3)
        results.Add(Tuple.Create(head.Position, headMtrix));

        では、どのように変える必要があるのでしょうか?

        全くの初心者で申し訳ありません。
        よろしくお願いします。
        2012-08-28 17:21
      • 某支配人       // getHeadPointsで取得した、各東部の位置毎にループ    // 追加 第4回2nd
              for (int idx = 0; headList != null && idx < headList.Count; ++idx)
              {
                // 骨格の座標から画像情報の座標に変換
                SkeletonPoint headPos = headList[idx].Item1;    // 追加 第4回2nd
                ColorImagePoint headPt
                  = kinect.MapSkeletonPointToColor(headPos, rgbFormat);  // 追加 第4回2nd

                // 距離に応じてサイズを決定   // 追加 第5回
                int size = (int)(192 / headPos.Z);

                // 頭の位置にマスク画像を描画
                Matrix4 headMtrx = headList[idx].Item2;
                Matrix rot = new Matrix(-headMtrx.M11, headMtrx.M12,
                            -headMtrx.M21, headMtrx.M22,
                            headPt.X, headPt.Y);
                drawContext.PushTransform(new MatrixTransform(rot));
                //Rect rect = new Rect(- 64, - 64, 128, 128);
                Rect rect = new Rect(-size / 2, -size / 2, size, size);  // 変更 第5回
                drawContext.DrawImage(maskImage, rect);
                drawContext.Pop();
              }
              // 画面に表示するビットマップに描画
              drawContext.Close();
              bmpBuffer.Render(drawVisual);

        この部分で// 変更 第5回となっているあたりを参考にしていただければ、サイズの変更は可能だと思います。
        2012-08-23 11:31
    • OutOfMemoryの解決方法 mkama 2012-08-11 19:30 ジグソー運営事務局にお願いして、2週間遅れでレビュー書いています。

      入院2週間目で、やっと抜糸(抜鉤25本)しました。
      kinect + ディスクトップを病室に持ち込んで、やっとレビュー開始しました。

      連載 第5回目レビューでOutOfMemoryが発生して困っていましたが、解決方法がわかりました。

      ガーベージコレクションを強制するとエラーが発生しません。

      レビューアーの方で他の方法で解決された方、いらっしゃいましたか?

      private void fillBitmap()の最後に追加します。

      // 画面に表示するビットマップに描画
      drawConText.Close();
      bmpBuffer.Render(drawVisual);

      GC.Collect(); //★これを追加
      1件のコメント
      • kazgb 自分もこの1行でOutOfMemoryの発生が無くなりました。
        他の方法は良く分かっていないので試せていないのですが・・・
        2012-08-12 10:54

ジグソープレミアムレビュー

  • やってみようKinect(キネクト)アプリ開発 - ラボクルー集まれ!