質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • C++

    3455questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Kinect

    85questions

    Kinect(キネクト)はマイクロソフトから発売されたジェスチャー・音声認識によって 操作ができるデバイスです。

(再)kinectからカラー画像の表示

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 135

noa_remiria

score 1

 前提・実現したいこと

再度の質問申し訳ありません。
Visial StudioでKinectから画像データを表示したいです。
コードは下記のサイトからお借りしました。
https://github.com/K4W2-Book/K4W2-Book/blob/master/C%2B%2B(Native)/01_Color/KinectV2-Color-01/KinectV2/main.cpp
■■な機能を実装中に以下のエラーメッセージが発生しました。

 発生している問題・エラーメッセージ

opencv_world320d.dllが見つかないため、コードの実行を続行できません。

 該当のソースコード

```C++

include<iostream>

include<sstream>

include<Kinect.h>

include<opencv2/opencv.hpp>

include<atlbase.h>

define ERROR_CHECK( ret )  \

    if ( (ret) != S_OK ) {    \         std::stringstream ss;    \         ss << "failed " #ret " " << std::hex << ret << std::endl;            \         throw std::runtime_error( ss.str().c_str() );            \     }

class KinectColor { private:     //Kinect SDK     CComPtr<IKinectSensor> kinect = nullptr;

    CComPtr<IColorFrameReader> colorFrameReader = nullptr;

    int colorWidth;     int colorHeight;     unsigned int colorBytesPerPixel;

    ColorImageFormat colorFormat = ColorImageFormat::ColorImageFormat_Bgra;

    //表示部分     std::vector<BYTE> colorBuffer;

public:

    ~KinectColor()     {         //Kinectの動作停止         if (kinect != nullptr) {             kinect->Close();         }     }

    //初期化     void intialize()     {         //デフォルトのkinectを取得する         ERROR_CHECK(::GetDefaultKinectSensor(&kinect));         ERROR_CHECK(kinect->Open());

        //カラーリーダーを取得する         CComPtr<IColorFrameSource> colorFrameSource;         ERROR_CHECK(kinect->get_ColorFrameSource(&colorFrameSource));         ERROR_CHECK(colorFrameSource->OpenReader(&colorFrameReader));

        //デフォルトのカラー画像サイズを取得する         CComPtr<IFrameDescription> defaultColorFrameDescription;         ERROR_CHECK(colorFrameSource->get_FrameDescription(&defaultColorFrameDescription));         ERROR_CHECK(defaultColorFrameDescription->get_Width(&colorWidth));         ERROR_CHECK(defaultColorFrameDescription->get_Height(&colorHeight));         ERROR_CHECK(defaultColorFrameDescription->get_BytesPerPixel(&colorBytesPerPixel));         std::cout << "default :" << colorWidth << "," << colorHeight << "," << colorBytesPerPixel << std::endl;

        //カラー画像のサイズを取得する         CComPtr<IFrameDescription> colorFrameDescription;         ERROR_CHECK(colorFrameSource->CreateFrameDescription(ColorImageFormat::ColorImageFormat_Bgra, &colorFrameDescription));         ERROR_CHECK(colorFrameDescription->get_Width(&colorWidth));         ERROR_CHECK(colorFrameDescription->get_Height(&colorHeight));         ERROR_CHECK(colorFrameDescription->get_BytesPerPixel(&colorBytesPerPixel));         std::cout << "create :" << colorWidth << "," << colorHeight << "," << colorBytesPerPixel << std::endl;

        //バッファー作成         colorBuffer.resize(colorWidth * colorHeight * colorBytesPerPixel);     }

    void run()     {         while (1) {             update();             draw();

            auto key = cv::waitKey(10);             if (key == 'q') {                 break;             }         }     }

private:

    //データの更新処理     void update()     {         updateColorFrame();     }

    //カラーフレーム更新     void updateColorFrame()     {         //フレームを更新する         CComPtr<IColorFrame> colorFrame;         auto ret = colorFrameReader->AcquireLatestFrame(&colorFrame);         if (FAILED(ret)) {             return;         }

        //指定の形式でデータを取得する         ERROR_CHECK(colorFrame->CopyConvertedFrameDataToArray(colorBuffer.size(), &colorBuffer[0], colorFormat));     }

    //データの表示処理     void draw()     {         drawColorFrame();     }

    //カラーデータ表示処理     void drawColorFrame()     {

if 0

        //カラーデータを表示する         cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]);         cv::imshow("Color Image", colorImage);

else

        cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]);         cv::Mat harfImage;         cv::resize(colorImage, harfImage, cv::Size(), 0.5, 0.5);         cv::imshow("Harf Image", harfImage);

endif

    } };

int main() {     try {         KinectColor color;         color.intialize();         color.run();     }     catch (std::exception& ex) {         std::cout << ex.what() << std::endl;     } }```

 試したこと

以前質問しました際と同様ですがopenCVのバージョンをNuGetパッケージの2.4から公式からDLして3.2バージョンに変更したり
C++の出力部分を以前成功したものと比べたりしましたが全く同一でした。
また、プロジェクト自体を3回ほど同じコード同じ設定で試してみたのですが上記のようなエラーメッセージが出てしまいました。
さらにopencvの再インストールや環境変数も変えたのですが同じエラーメッセージが出てしまいました

 補足情報(FW/ツールのバージョンなど)

Visial Studio2017 opencv3.2

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

環境変数を変えてみたらできました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    opencvの連番読み込み

    今まで、iplimage型でコードを書いていたのですが、 多くの人の指摘があり、mat型に変更したいと考えています。 そこで、画像の連番読み込み、保存を行いたいと考えていま

  • 解決済

    肌色検出の出力について

    肌色検出の最後の描画のところでエラーが出てしまします 画像のサイズの問題なのかとおもいますが、 どう間違えているのか、どう改善したらのいいかわかりません。 開発環境 V

  • 解決済

    opencv 動画 再生

    #include <stdio.h> #include <cv.h> #include <highgui.h> int main(int argc, char* argv[])

  • 解決済

    ファイル名に変数を用いて繰り返し読み込み処理を行いたい

    現在画像編集のプログラムopnCVとC++を用いた上で作成している初歩的段階です。 複数枚の画像に対してimreaの処理をかけた上で繰り返し画像の読み込み画像番号順に(1から並んで

  • 解決済

    OpenCVを使った笑顔検出での問題

    前提・実現したいこと OpenCVで元からあるサンプルコード「smiledetect.cpp」を用いて笑顔検出のシステムを作っています。 検出機能を実装中に以下の問題が発生しました

  • 解決済

    OpenCVを使って動画の書き出しができない

    aviファイルを読み込み,1フレームずつ間隔をSleep関数を用いて変化させて再生速度を変えるプログラムを作っています. 0倍速,等倍速,2倍速,3倍速,4倍速,5倍速の速度を行き

  • 解決済

    OPENCVにおけるエラー

    openCVをはじめようとして、以下のエラーがでました。 プログラミング初心者です。 visual studio community 2017を使っています。 opencv3.3.

  • 解決済

    二つの画像を一つにするプログラムをvisual studioで行いたいのですがエラーがでます。

    <環境> Windows10 64bit visual studio 2015 opencv 2.4.6 opencv3.4に変更いたしました。 以前質問したリンク内容ので出て

同じタグがついた質問を見る

  • C++

    3455questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Kinect

    85questions

    Kinect(キネクト)はマイクロソフトから発売されたジェスチャー・音声認識によって 操作ができるデバイスです。