지난 글에서 컬러 영상을 출력하는 방법을 정리했다. ( Kinect v2 를 이용하여 RGB 영상을 사용하자. (키넥트2) )
이번에는 depth 영상을 출력하는방법 정리.
컬러 영상을 이용할 때와 프레임 소스와 리더 클래스의 이름만 조금 다를 뿐 실제 사용법은 동일하다.
- // Kinect Open
- IKinectSensor* kinect = NULL;
- GetDefaultKinectSensor( &kinect );
- kinect->Open();
- // depth
- // source
- IDepthFrameSource* pDepthSource = NULL;
- pSensor->get_DepthFrameSource(&pDepthSource);
- // reader
- IDepthFrameReader* pDepthReader = NULL;
- pDepthSource->OpenReader(&pDepthReader);
- // description
- IFrameDescription* pDescriptionDepth = NULL;
- pDepthSource->get_FrameDescription(&pDescriptionDepth);
- int widthDepth = 0;
- int heightDepth = 0;
- pDescriptionDepth->get_Width(&widthDepth); // 512
- pDescriptionDepth->get_Height(&heightDepth); // 424
- unsigned int bufferSize = width * height * sizeof( unsigned short );
- cv::Mat bufferMatDepth(heightDepth, widthDepth, CV_16UC1);
- cv::Mat depthMatDepth(heightDepth, widthDepth, CV_8UC1);
- cv::namedWindow("Depth");
- while(1)
- {
- IDepthFrame* pDepthFrame = NULL;
- pDepthReader->AcquireLatestFrame(&pDepthFrame);
- pDepthFrame->AccessUnderlyingBuffer(&bufferSizeDepth, reinterpret_cast<UINT16**>(&bufferMatDepth.data));
- SafeRelease(pDepthFrame);
- cv::imshow("Depth", depthMat);
- if (cv::waitKey(30) == VK_ESCAPE) break;
- }
- // release memory
- SafeRelease(pDepthSource);
- SafeRelease(pDepthReader);
- SafeRelease(pDescription);
- if (pSensor)
- {
- pSensor->Close();
- }
- SafeRelease(pSensor);
결과영상
'Programming > Kinect V2' 카테고리의 다른 글
Kinect v2 를 이용하여 RGB 영상을 사용하자. (키넥트2) (3) | 2015.03.16 |
---|