HOME

kazgb
ニックネーム kazgb
自己紹介 レビュー応募させていただきました。
プログラミングは仕事でやっていますが、java以外は全く触った事がないので初心者です。
簡単にできるのか心配ですが、勉強するつもりでがんばってみたいと思います。
  • やってみよう!Kinectアプリ開発 - 第7回 音声認識 2012-07-13 17:36 kinection.jp管理人 前回はKinect™ for Windows® SDKによる音声処理機能の紹介として、機能の概要と音源の方向の取得方法を説明しました。今回は前回に引き続き、NUI(Natural User Interface)APIの主要な機能の一つとされている音声認識を紹介します。 続きを見る
    3件の質問スレッド
    • サンプルプログラムについて Morihappy 2015-11-05 08:52 すみません。第7回の音声認識の全てのサンプルプログラムをダウンロードしたいのですが、よろしいでしょうか。
    • 起動しません。 haru 2014-02-20 17:58 第6回までのプログラムを参考にさせていただきまして
      こちらの音声認識のプログラムを入力してデバックするとvshost32,exeは動作を停止しました。と出るのですが何か間違えたのでしょうか?よろしければ改善しないといけない場所など教えて頂けると嬉しいです。
    • URL消えました? kazgb 2012-10-31 21:51 >Kinect for Windows Language Packs v1.5.0 日本語用ロケール

      URL飛べなくなっていたので・・・
      http://www.microsoft.com/en-us/download/details.aspx?id=34809
      ここのファイルで大丈夫でしょうか?
      また消えるかな?
  • やってみよう!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アプリ開発 - 第4回 骨格情報の利用 2012-06-22 17:18 kinection.jp管理人 前回はKinect™ for Windows® SDKを使い、Kinectのカメラから画像情報を取得し画面に表示するアプリケーションを作成しました。今回はこれを修正し、よりKinectらしいアプリケーションにしましょう。通常説明の順序として次は深度センサーなのですが、ここは敢えて飛ばして骨格情報の取得をしてみます。 続きを見る
    4件の質問スレッド
    • バージョンアップで? kazgb 2012-10-31 22:05 SDKがバージョンアップされて、
      警告みたいなのがでていたので気になりました。

      >= kinect.MapSkeletonPointToColor(headPos, rgbFormat);

      大雑把でアレですが上の部分。。。
      一応動くみたい?ですが、[使用しないでください]と記述されていました。

      調べて、以下に書き換えました。

      = kinect.CoordinateMapper.MapSkeletonPointToColorPoint(headPos, rgbFormat);

      動いているので問題なさそうですが、、、大丈夫・・・ですよね? うん。
    • 解説のDrawingVisualについて claw 2012-08-09 17:03 はじめまして。
      現在、大学でプログラミングを学びはじめた者です。

      非常に細かいことで申し訳ないのですが、
      2ページ目、fillBitmapメソッドの解説の部分、

      > DrawingVisualのRenderOpenメソッドでDrawingContextオブジェクトを作成します。

      となっていますが、
      DrawingVisualのRenderOpenメソッドでDrawContextオブジェクトを作成します。
      の間違い(?)ではないでしょうか?

      読んでいて少し混乱してしまったので……
      1件のコメント
      • kinection.jp管理人 clawさん

        ご質問を理解できていないかも知れませんが、RenderOpenメソッドでDrawingContextクラスのオブジェクトを作成しているので、意図通りです(DrawContextというクラスはありません)。
        もし、用語として「<クラス名>オブジェクト」ではなく「<変数名>オブジェクト」とすべき、という意味であれば、例えばgoogleで"DrawingContext-object"で検索すれば普通に使われているのがわかると思います。
        2012-08-10 10:00
    • 保存について 柏木 2012-07-17 10:06 初めまして。
      初心者なのですが、取得した骨格情報というのはテキストなどに保存可能でしょうか?
      全20ポイントのスケルトンのx,y,z座標を30フレームで取得し続け、10分程度のデータを保存することは可能でしょうか?
      続いて、取得したRBG画像を動画として保存することは可能でしょうか?
      環境は
      VisualStudio2010でc#
      Kinect for Windows v.1.5
      Windows7
      です。

      よろしくお願いいたします。
      2件のコメント
      • 柏木 コメントありがとうございます!えと・・・そうなると、たとえば
        (1)
        void kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {
        try
        {
        using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
        {
        if (skeletonFrame != null)
        {
        DrawSkeleton(skeletonFrame);
        }
        }
        }
        catch (Exception ex)
        {
        MessageBox.Show(ex.Message);
        }
        }
        private void DrawSkeleton(SkeletonFrame skeletonFrame)
        {
        // スケルトンのデータを取得する
        Skeleton[] skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
        skeletonFrame.CopySkeletonDataTo(skeletons);

        SkeletonCanvas.Children.Clear();

        // スケルトンのジョイントを一つ一つ取得
        foreach (Skeleton skeleton in skeletons)
        {
        // スケルトンがトラッキング状態の場合は、ジョイントを取得
        if (skeleton.TrackingState == SkeletonTrackingState.Tracked)
        {
        // ジョイントを保存する
        foreach (Joint joint in skeleton.Joints)
        {
        // ジョイントがトラッキングされていなければ次へ
        if (joint.TrackingState == JointTrackingState.NotTracked)
        {
        continue;
        }

        // ジョイントの座標を保存する
        JointRecord(joint.Position);
        }
        }
        }
        }
        とでもして、JointRecord部分で・・・どう作ればいいのかわからなくなってしまっております。Console.WriteLineで保存可能なのでしょうか?

        (2)
        void kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
        try
        {
        // RGBカメラのフレームデータを取得する
        using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
        {
        if (colorFrame != null)
        {
        // RGBカメラのピクセルデータを取得する
        byte[] colorPixel = new byte[colorFrame.PixelDataLength];
        colorFrame.CopyPixelDataTo(colorPixel);

        // ピクセルデータをビットマップに変換する
        RGBCameraImage.Source = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96,
        PixelFormats.Bgr32, null, colorPixel, colorFrame.Width * colorFrame.BytesPerPixel);
        }
        }
        }
        catch (Exception ex)
        {
        MessageBox.Show(ex.Message);
        }
        }
        たとえばこの状態だとして、GridのImageを動画で保存するにはどのようにすればいいのでしょうか?

        色々検索はしてみたのですが、画像保存の場合くらいしか見つからず、よく分かりませんで。

        どうぞよろしくお願いいたします。
        2012-07-20 10:40
      • 初音玲 (1)
        保存先の書き込みスピードにもよりますがテキストデータとしての保存は可能です。

        (2)
        取得したRGB画像を動画として保存することは可能です。
        2012-07-19 02:19
    • バグ修正 kinection.jp管理人 2012-07-03 09:38 かおるんさんご指摘の画像が反転するバグの修正です。

      Matrix rot = new Matrix(-headMtrx.M11, headMtrx.M12,
      -headMtrx.M21, headMtrx.M22,
      headPt.X, headPt.Y);

      M11 と M12 のところの符号を反転させています。
  • やってみよう!Kinectアプリ開発 - 第8回 初期化・終了処理 2012-07-20 18:01 kinection.jp管理人 前回までの基本編では、Kinect™ for Windows® SDKの各機能を紹介してきました。今回からは応用編として、それらの機能を使った、より実用的なアプリケーションの開発で必要な要素を説明していきます。 今回は、実際のアプリケーションを開発するうえで必要となる、初期化・終了処理などのトピックを紹介します。 続きを見る
    2件の質問スレッド
    • ElevationAngleについて mkama 2012-08-29 07:47 >なおSDKのドキュメントによると「Kinectセンサーのモーターは継続した操作を想定していないので、モーターの操作をできるだけ少なくすること」と注意書きがありますので注意しましょう。(目安としては、「1秒間に操作は1回まで」、また「15回操作した後は最低20秒間をあけること」とあります)

      知らなかったので、目一杯モーターを動かしていました。(~_~;)

      モータ保護用の判定ルーチンを作ってみました。
      一つ質問ですが、20秒間隔が空けば、15回の回数制限は解除して良いのですか?

      // モータ保護用の判定ルーチン
      private const int MaxElevation = 15;
      private DateTime dtNextElevation = DateTime.Now;
      private int intCountElevation = MaxElevation;

      private bool CheckElevation()
      {
        if (intCountElevation-- <= 0)
        {
          intCountElevation = MaxElevation;
          dtNextElevation = DateTime.Now.AddSeconds(20);
          return false;
        }
        else
        {
          TimeSpan ts = DateTime.Now - dtNextElevation;
          if (ts.TotalSeconds >= 1)
          {
            if (ts.TotalSeconds >= 20)
              intCountElevation = MaxElevation;

            dtNextElevation = DateTime.Now;
            return true;
          }
          else
            return false;
        }
      }
      1件のコメント
      • kinection.jp管理人 すみません、我々もSDKのドキュメントに書いてあること以上には情報を持っていません。
        ただ、ドキュメントを読む限りでは、20秒間隔が空けば、15回の回数制限は解除して良いと思われます。
        2012-08-29 16:02
    • ヘルプについて kazgb 2012-08-16 22:56
      さぁがんばろう!
      と思って始めたらいきなり挫折しそうになりました><。

      ヘルプ・・・普通に表示された方いらっしゃるでしょうか?
      もしかしたら自分だけかもしれませんが、表示されずに悩んでしまいました。

      一応解決しましたが、同じ人が”もし”いたら役立つかもしれないのでカキカキ。

      色々見比べてみたところ、
      自分の環境には
      「Microsoft ヘルプ ビューアー 1.1」がインストールされていないようでした。
      いや・・・もしかしたら別の理由があったかもしれませんが、
      上記を解消するためにサービスパック1を適用しました。

      http://www.microsoft.com/ja-jp/download/details.aspx?id=23691

      こんなのあったんですね。。。皆さん適応されているのでしょうか?
      (もしかしたら自分が見落としているだけかもしれませんが・・・)
      1件のコメント
      • kinection.jp管理人 ご指摘ありがとうございます。連載第2回では「Service Pack などの更新プログラムを適用しておきましょう」とさらっと書いただけでした。追記しておきます。 2012-08-29 15:53
  • 必殺技を撃つ! 2012-06-06 14:46 kazgb 必殺技とは、撃つまでの無駄な所作。(カッコイイ?ポーズ)さらに無駄な叫び。(必要不可欠な発動キー!?) この2つが組み合わさった時に放たれる一撃必殺の技なのである。ニコなんちゃらでも見たような気がし 続きを見る
    3件のコメント (すべて表示)
    • kazgb ググッタら、カメ○メハはすでに存在しますね。。。
      ネギま的な魔法のほうがいいかなぁ~

      ”気” か "魔法" かの違い!?
      2012-06-09 02:09
    • kazgb >リーダーさん

      今頃コメントに気がつきました(汗
      誰でも思いつくかもしれませんが、誰もが夢見ると思いましたので><。
      ほんとに作れたらイイデスケドネー・・・
      2012-06-09 01:58
    • リーダー うわー、いいですねコレ!
      ぜひやってみたいです!!
      2012-06-07 12:41

アーカイブ

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

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