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

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

新規登録して質問してみよう
ただいま回答率
87.20%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

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

Kinect

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

解決済

kinectからカラー画像の取得

noa_remiria
noa_remiria

総合スコア0

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

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

Kinect

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

1回答

0評価

0クリップ

1514閲覧

投稿2018/07/03 08:27

前提・実現したいこと

kinectを使ったカラー画像の取得するためにサンプルコードを動かしたい。
下記のサンプルコード使用しました。
https://github.com/K4W2-Book/K4W2-Book/blob/master/C%2B%2B(Native)/01_Color/KinectV2-Color-01/KinectV2/main.cpp)

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

1>c:\program files (x86)\windows kits\10\include\10.0.17134.0\ucrt\stdio.h(208): note: 'fopen' の宣言を確認してください C4996 . Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. kinect color d:\vsc++2017\opencv\build\include\opencv2\flann\logger.h

該当のソースコード

C++

#include <iostream> #include <sstream> #include <map> #include <Kinect.h> #include <opencv2\opencv.hpp> #include <atlbase.h> // 次のように使います // ERROR_CHECK( ::GetDefaultKinectSensor( &kinect ) ); // 書籍での解説のためにマクロにしています。実際には展開した形で使うことを検討してください。 #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 KinectApp { 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: ~KinectApp() { // Kinectの動作を終了する if (kinect != nullptr) { kinect->Close(); } } // 初期化 void initialize() { // デフォルトの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( colorFormat, &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 } }; void main() { try { KinectApp app; app.initialize(); app.run(); } catch (std::exception& ex) { std::cout << ex.what() << std::endl; } };

試したこと

パッケージに問題があると思いopencvをNuGetのパッケージの2.4.11をopencvの公式サイトから最新の3.4.1に変えたり、x84からx64に変えて
試してみたのですが、exeファイルが作成されず決まって上記のようなエラーメッセージが出てしまいます。

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

Visual Studio 2017 ,opencv3.4.1 , kinect V2 for Windows , kinect SDK v2.0_1409

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

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

Kinect

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