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

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

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

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

Kinect

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

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

1回答

7548閲覧

C++ KinectV2 atlbase.hがインクルードできない

tiroru

総合スコア7

C++

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

Kinect

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

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2016/10/14 10:19

###前提・実現したいこと
初めて質問します。よろしくお願いします。
C++、visual studio express 2013 for Windows Desktopで書籍『KINECT for Windows SDK プログラミング V2センサー対応版(中村薫、秀和システム)』を参考にしながら、kinectの以下のプログラムを動かそうとしているのですが、
「#include <atlbase.h>」
の部分でエラーが出てしまいます。
調べてみるとatlbase.hを使うにはATLが必要らしく、そのATLはWDKの中に含まれているということが分かりました。
しかし、express版ではWDKをサポートしておらず自前で環境構築しなくてはならなくてこの操作が分かりません。具体的には、WDK 10をインストールしてみたのですがこの後はどうしたらよいのでしょうか?そもそもWDK 10をインストールするので合っているのでしょうか?
ちなみに書籍ではkinectを動作させるひな形プログラムとして紹介されています。

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

C++

1エラー 4 error C1083: include ファイルを開けません。'atlbase.h':No such file or directory c:\users\hirayama\documents\visual studio 2013\projects\pra_kinect1\pra_kinect1\main.cpp 5 1 pra_kinect1 2 5 IntelliSense: ソース ファイルを開けません "atlbase.h" c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 5 1 pra_kinect1 3 6 IntelliSense: 識別子 "KinectApp" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 17 3 pra_kinect1 4 7 IntelliSense: 識別子 "kinect" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 30 2 pra_kinect1 5 8 IntelliSense: 識別子 "CComPtr" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 34 2 pra_kinect1 6 9 IntelliSense: 型名は使用できません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 34 10 pra_kinect1 7 10 IntelliSense: 識別子 "colorFrameSource" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 34 29 pra_kinect1 8 11 IntelliSense: 識別子 "colorFrameReader" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 36 2 pra_kinect1 9 12 IntelliSense: 型名は使用できません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 39 10 pra_kinect1 10 13 IntelliSense: 識別子 "colorFrameDescription" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 39 29 pra_kinect1 11 14 IntelliSense: 識別子 "colorFormat" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 40 2 pra_kinect1 12 15 IntelliSense: 識別子 "colorWidth" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 42 2 pra_kinect1 13 16 IntelliSense: 識別子 "colorHeight" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 43 2 pra_kinect1 14 17 IntelliSense: 識別子 "colorBytesPerPixel" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 44 2 pra_kinect1 15 18 IntelliSense: 識別子 "colorBuffer" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 51 2 pra_kinect1 16 19 IntelliSense: 識別子 "CComPtr" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 75 2 pra_kinect1 17 20 IntelliSense: 型名は使用できません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 75 10 pra_kinect1 18 21 IntelliSense: 識別子 "colorFrame" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 75 23 pra_kinect1 19 22 IntelliSense: 識別子 "colorFrameReader" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 76 13 pra_kinect1 20 23 IntelliSense: 識別子 "colorBuffer" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 82 2 pra_kinect1 21 24 IntelliSense: 識別子 "colorHeight" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 96 21 pra_kinect1 22 25 IntelliSense: 識別子 "colorWidth" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 96 34 pra_kinect1 23 26 IntelliSense: 識別子 "colorBuffer" が定義されていません c:\Users\hirayama\Documents\Visual Studio 2013\Projects\pra_kinect1\pra_kinect1\main.cpp 96 56 pra_kinect1 24警告 1 warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\opencv3.1.0\build\include\opencv2\core\mat.hpp 1965 1 pra_kinect1 25警告 2 warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\opencv3.1.0\build\include\opencv2\core\persistence.hpp 1 1 pra_kinect1 26警告 3 warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\opencv3.1.0\build\include\opencv2\core\utility.hpp 1 1 pra_kinect1 27

###該当のソースコード

C++

1#include <iostream> 2#include <sstream> 3#include <Kinect.h> 4#include <opencv2\opencv.hpp> 5#include <atlbase.h> 6 7#define ERROR_CHECK( ret ) \ 8 if ( (ret) != S_OK ) { \ 9 std::stringstream ss; \ 10 ss << "failed " #ret " " << std::hex << ret << std::endl; \ 11 throw std::runtime_error( ss.str().c_str() ); \ 12 } 13 14void main() 15{ 16 try { 17 KinectApp app; 18 app.initialize(); 19 app.run(); 20 } 21 22 catch (std::exception& ex) { 23 std::cout << ex.what() << std::endl; 24 } 25} 26 27void initialize() 28{ 29 //デフォルトのKinectを取得する 30 ERROR_CHECK(::GetDefaultKinectSensor(&kinect)); 31 ERROR_CHECK(kinect->Open()); 32 33 //カラーリーダーを取得する 34 CComPtr<IColorFrameSource> colorFrameSource; 35 ERROR_CHECK(kinect->get_ColorFrameSource(&colorFrameSource)); 36 ERROR_CHECK(colorFrameSource->OpenReader(&colorFrameReader)); 37 38 //カラー画像のサイズを取得する 39 CComPtr<IFrameDescription> colorFrameDescription; 40 ERROR_CHECK(colorFrameSource->CreateFrameDescription( 41 colorFormat, &colorFrameDescription)); 42 ERROR_CHECK(colorFrameDescription->get_Width(&colorWidth)); 43 ERROR_CHECK(colorFrameDescription->get_Height(&colorHeight)); 44 ERROR_CHECK(colorFrameDescription->get_BytesPerPixel( 45 &colorBytesPerPixel)); 46 std::cout << "create : " << colorWidth << ", " << 47 colorHeight << ", " << 48 colorBytesPerPixel << std::endl; 49 50 //バッファーを作成する 51 colorBuffer.resize(colorWidth * colorHeight * colorBytesPerPixel); 52} 53 54void run() 55{ 56 while (1) { 57 update(); 58 draw(); 59 60 auto key = cv::waitKey(10); 61 if (key == 'q') { 62 break; 63 } 64 } 65} 66 67void update() 68{ 69 updateColorFrame(); 70} 71 72void updateColorFrame() 73{ 74 //フレームを取得する 75 CComPtr<IColorFrame> colorFrame; 76 auto ret = colorFrameReader->AcquireLatestFrame(&colorFrame); 77 if (FAILED(ret)) { 78 return; 79 } 80 81 //BGRAの形式でデータを取得する 82 ERROR_CHECK(colorFrame->CopyConvertedFrameDataToArray( 83 colorBuffer.size(), &colorBuffer[0], ColorImageFormat_Bgra)); 84} 85 86//データの表示処理 87void draw() 88{ 89 drawColorFrame(); 90} 91 92//カラーデータの表示処理 93void drawColorFrame() 94{ 95 //カラーデータを表示する 96 cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]); 97 cv::imshow("Color Image", colorImage); 98}

###試したこと
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
で「Install Windows Driver Kit (WDK) 10」をクリックしてインストールしました。
また、警告「Unicode形式で保存してください」に対しては[ファイル]-[保存オプションの詳細設定]-[エンコード]で[Unicode(UTF-8 シグネチャ付き) - コードページ 65001]を選択してビルドしましたが警告は消えませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
C++
Visual Studio Express 2013 for Windows Desktop
Windows 10 Pro
64ビットos

Win32コンソールアプリケーション
Kinect for Windows SDK v2.0
opencv3.1.0

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

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

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

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

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

naomi3

2016/10/15 05:59

ファイルatlbase.h存在するディレクトリのパスをインクルード ディレクトリに追加していますか?
tiroru

2016/10/16 08:35

おそらくしていません。atlbase.hがどこにあるのか分からないです。僕の質問自体をatlbase.hがどこにあるのか、どう手に入れるのかという質問に置き換えるべきだったかもしれないです。現在の[追加のインクルードディレクトリ]は[全ての構成]を選択した状態でC:\opencv3.1.0\build\includeと$(KINECTSDK20_DIR)\incです。
guest

回答1

0

自己解決

解決できなかったので、
visual studio 2013 professionalを使用することになりました。
ご一緒に悩んでくださった方ありがとうございました。

投稿2016/10/18 10:51

tiroru

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問