키넥트 2 예제 프로그램이 많이 공개되어 있는 가운데 에러 처리함수를 제외하고 꼭 있어여 할 부분만 정리.
키넥트 2 에서는 영상을 출력하는 방식이
센서열고 -> 소스받고 -> 프레임리더를 이용 -> 프레임 디스크립터를 받아와서 -> 출력 하는 방식을 이용하는 것 같다.
이와 관련된 내용은 추후에 다시한번 정리하는 걸로.
- // Kinect Open
- IKinectSensor* kinect = NULL;
- GetDefaultKinectSensor( &kinect );
- kinect->Open();
- // color
- // source
- IColorFrameSource* pColorSource = NULL;
- pSensor->get_ColorFrameSource(&pColorSource);
- // reader
- IColorFrameReader* pColorReader = NULL;
- pColorSource->OpenReader(&pColorReader);
- // description
- IFrameDescription* pDescriptionColor = NULL;
- pColorSource->get_FrameDescription(&pDescriptionColor);
- int widthColor = 0;
- int heightColor = 0;
- pDescriptionColor->get_Width(&widthColor);
- pDescriptionColor->get_Height(&heightColor);
- unsigned int bufferSizeColor = widthColor * heightColor * 4 * sizeof(unsigned char);
- cv::Mat bufferMatColor(heightColor, widthColor, CV_8UC4);
- cv::Mat colorMatColor(heightColor / 2, widthColor / 2, CV_8UC4);
- cv::namedWindow("Color");
- while(1)
- {
- IColorFrame* pColorFrame = NULL;
- pColorReader->AcquireLatestFrame(&pColorFrame);
- pColorFrame->CopyConvertedFrameDataToArray(bufferSizeColor, reinterpret_cast<BYTE*>(bufferMatColor.data),ColorImageFormat::ColorImageFormat_Bgra);
- cv::resize(bufferMatColor, colorMatColor, cv::Size(), 0.5, 0.5);
- SafeRelease(pColorFrame);
- cv::imshow("Color", colorMatColor);
- if (cv::waitKey(30) == VK_ESCAPE) break;
- }
- // release memory
- SafeRelease(pColorSource);
- SafeRelease(pColorReader);
- SafeRelease(pDescriptionColor;
- if (pSensor)
- {
- pSensor->Close();
- }
- SafeRelease(pSensor);
결과영상
'Programming > Kinect V2' 카테고리의 다른 글
Kinect v2 를 이용하여 Depth 영상을 사용하자. (키넥트2) (0) | 2015.03.16 |
---|