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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C++

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

Kinect

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

Q&A

解決済

1回答

1573閲覧

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

noa_remiria

総合スコア11

C++

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

Kinect

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

0グッド

0クリップ

投稿2018/07/04 03:53

編集2018/07/04 04:16

前提・実現したいこと

再度の質問申し訳ありません。
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++

1#include<iostream> 2#include<sstream> 3 4#include<Kinect.h> 5 6#include<opencv2/opencv.hpp> 7 8#include<atlbase.h> 9 10#define ERROR_CHECK( ret ) \ 11 if ( (ret) != S_OK ) { \ 12 std::stringstream ss; \ 13 ss << "failed " #ret " " << std::hex << ret << std::endl; \ 14 throw std::runtime_error( ss.str().c_str() ); \ 15 } 16 17class KinectColor 18{ 19private: 20 //Kinect SDK 21 CComPtr<IKinectSensor> kinect = nullptr; 22 23 CComPtr<IColorFrameReader> colorFrameReader = nullptr; 24 25 int colorWidth; 26 int colorHeight; 27 unsigned int colorBytesPerPixel; 28 29 ColorImageFormat colorFormat = ColorImageFormat::ColorImageFormat_Bgra; 30 31 //表示部分 32 std::vector<BYTE> colorBuffer; 33 34public: 35 36 ~KinectColor() 37 { 38 //Kinectの動作停止 39 if (kinect != nullptr) { 40 kinect->Close(); 41 } 42 } 43 44 //初期化 45 void intialize() 46 { 47 //デフォルトのkinectを取得する 48 ERROR_CHECK(::GetDefaultKinectSensor(&kinect)); 49 ERROR_CHECK(kinect->Open()); 50 51 //カラーリーダーを取得する 52 CComPtr<IColorFrameSource> colorFrameSource; 53 ERROR_CHECK(kinect->get_ColorFrameSource(&colorFrameSource)); 54 ERROR_CHECK(colorFrameSource->OpenReader(&colorFrameReader)); 55 56 //デフォルトのカラー画像サイズを取得する 57 CComPtr<IFrameDescription> defaultColorFrameDescription; 58 ERROR_CHECK(colorFrameSource->get_FrameDescription(&defaultColorFrameDescription)); 59 ERROR_CHECK(defaultColorFrameDescription->get_Width(&colorWidth)); 60 ERROR_CHECK(defaultColorFrameDescription->get_Height(&colorHeight)); 61 ERROR_CHECK(defaultColorFrameDescription->get_BytesPerPixel(&colorBytesPerPixel)); 62 std::cout << "default :" << colorWidth << "," << colorHeight << "," << colorBytesPerPixel << std::endl; 63 64 //カラー画像のサイズを取得する 65 CComPtr<IFrameDescription> colorFrameDescription; 66 ERROR_CHECK(colorFrameSource->CreateFrameDescription(ColorImageFormat::ColorImageFormat_Bgra, &colorFrameDescription)); 67 ERROR_CHECK(colorFrameDescription->get_Width(&colorWidth)); 68 ERROR_CHECK(colorFrameDescription->get_Height(&colorHeight)); 69 ERROR_CHECK(colorFrameDescription->get_BytesPerPixel(&colorBytesPerPixel)); 70 std::cout << "create :" << colorWidth << "," << colorHeight << "," << colorBytesPerPixel << std::endl; 71 72 //バッファー作成 73 colorBuffer.resize(colorWidth * colorHeight * colorBytesPerPixel); 74 } 75 76 void run() 77 { 78 while (1) { 79 update(); 80 draw(); 81 82 auto key = cv::waitKey(10); 83 if (key == 'q') { 84 break; 85 } 86 } 87 } 88 89private: 90 91 //データの更新処理 92 void update() 93 { 94 updateColorFrame(); 95 } 96 97 //カラーフレーム更新 98 void updateColorFrame() 99 { 100 //フレームを更新する 101 CComPtr<IColorFrame> colorFrame; 102 auto ret = colorFrameReader->AcquireLatestFrame(&colorFrame); 103 if (FAILED(ret)) { 104 return; 105 } 106 107 //指定の形式でデータを取得する 108 ERROR_CHECK(colorFrame->CopyConvertedFrameDataToArray(colorBuffer.size(), &colorBuffer[0], colorFormat)); 109 } 110 111 //データの表示処理 112 void draw() 113 { 114 drawColorFrame(); 115 } 116 117 //カラーデータ表示処理 118 void drawColorFrame() 119 { 120#if 0 121 //カラーデータを表示する 122 cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]); 123 cv::imshow("Color Image", colorImage); 124#else 125 cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]); 126 cv::Mat harfImage; 127 cv::resize(colorImage, harfImage, cv::Size(), 0.5, 0.5); 128 cv::imshow("Harf Image", harfImage); 129#endif 130 } 131}; 132 133int main() 134{ 135 try { 136 KinectColor color; 137 color.intialize(); 138 color.run(); 139 } 140 catch (std::exception& ex) { 141 std::cout << ex.what() << std::endl; 142 } 143}``` 144 145### 試したこと 146 147以前質問しました際と同様ですがopenCVのバージョンをNuGetパッケージの2.4から公式からDLして3.2バージョンに変更したり 148C++の出力部分を以前成功したものと比べたりしましたが全く同一でした。 149また、プロジェクト自体を3回ほど同じコード同じ設定で試してみたのですが上記のようなエラーメッセージが出てしまいました。 150さらにopencvの再インストールや環境変数も変えたのですが同じエラーメッセージが出てしまいました 151 152### 補足情報(FW/ツールのバージョンなど) 153 154Visial Studio2017 opencv3.2

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

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

投稿2018/07/06 02:36

noa_remiria

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問