現在Kinectv2を用いて開発を行っています.
開発の中で深度画像を用いるのですがサンプルの状態では0から255までのグレーデータで
表示されるようになっていますがこれに疑似カラーをつけて分かりやすくしたいと
考えています. そこでその疑似カラーのつけ方もしくはアルゴリズムを教えてください.
現在はこのような形で初期化と描画を行っています.
// 深度画像関連初期化
void KinectApp::depthinitialize() {
// ソース取得 ERROR_CHECK(Kinect->get_DepthFrameSource(&depthFrameSource)); // リーダー取得 ERROR_CHECK(depthFrameSource->OpenReader(&depthFrameReader)); // 深度画像サイズ取得 ERROR_CHECK(depthFrameSource->get_FrameDescription(&depthFrameDescription)); ERROR_CHECK(depthFrameDescription->get_Width(&depthWidth)); ERROR_CHECK(depthFrameDescription->get_Height(&depthHeight)); std::cout << "create : " << depthWidth << ", " << depthHeight << std::endl; // バッファー作成 depthBuffer.resize(depthWidth * depthHeight);
}
// 深度画像関連更新
void KinectApp::updateDepthFrame() {
// Depthフレームを取得する CComPtr<IDepthFrame> depthFrame; auto ret = depthFrameReader->AcquireLatestFrame(&depthFrame); if (ret != S_OK) { return; } // データを取得する ERROR_CHECK(depthFrame->CopyFrameDataToArray(depthBuffer.size(), &depthBuffer[0]));
}
// 深度画像描画
void KinectApp::drawDepthFrame() {
// Depthデータを表示する cv::Mat depthImage(depthHeight, depthWidth, CV_8UC1); cv::Mat harfImage; // Depthデータを0-255のグレーデータにする for (int i = 0; i < depthImage.total(); ++i) { depthImage.data[i] = depthBuffer[i] % 255; } cv::imshow("DepthImage", depthImage);
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。