KINECT 개발 환경 구축
1. Visua Studio 설치
Visual Studio2013을 혹은 다른 버전을 설치한다. 무료로 제공되는 Visual Studio Express 및 Visual Studio Community에서도 개발할 수 있다.
Visual Studio Express 2013 for Windows Desktop | Visual Studio Center
Visual Studio Community 2013 | Visual Studio Center
2. Kinect SDK v2 다운로드, 설치
Kinect SDK v2는 다음의 링크 사이트에서 다운로드 할 수 있다.
Kinect for Windows SDK 2.0 | Microsoft Download Center
설치 프로그램을 실행하여 SDK를 설치한다. 설치 후 Kinect v2를 PC에 연결하면 드라이버가 설치되어 사용 가능한 상태가 된다.
(SDK 설치 시 KINECT v2 Sample Program을 실행 할 수 있게 된다.
3. OpenCV 다운로드, 설치
Opencv Download 홈페이지
https://opencv.org/ 다음에서 다운로드 받을 수 있다.
Opencv 설치 과정은 없고 경로만 지정해서 사용하면 된다. 자세한 내용은검색
4. OpenCV include 및 라이브러리 참조
5. kinect include 및 라이브러리 참조
6. Setting Test ( Kinect Color Viewer )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
int main(){ HRESULT hr = S_OK;; IKinectSensor* pSensor; IMultiSourceFrameReader* pMultiReader;
GetDefaultKinectSensor(&pSensor); if (FAILED(hr)){ std::cerr << "Error : GetDefaultKinectSensor" << std::endl; return -1; }
hr = pSensor->Open(); if (FAILED(hr)){ std::cerr << "Error : IKinectSensor::Open()" << std::endl; return -1; }
hr = pSensor->OpenMultiSourceFrameReader( FrameSourceTypes::FrameSourceTypes_Depth | FrameSourceTypes::FrameSourceTypes_Color, &pMultiReader);
if (FAILED(hr)){ std::cerr << "Error : OpenMultiSourceFrameReader" << std::endl; return -1; }
IColorFrame* colorframe = nullptr; IColorFrameReference* frameref = nullptr;
// Get data from frame cv::Mat bufferMat; bufferMat = cv::Mat(KINECT_V2_COLOR_HEIGHT, KINECT_V2_COLOR_WIDTH, CV_8UC4); cv::Mat colorImg; colorImg = cv::Mat(KINECT_V2_COLOR_HEIGHT / 2, KINECT_V2_COLOR_WIDTH / 2, CV_8UC4);
IColorFrameSource * pColorSource; // ...... 1 hr = pSensor->get_ColorFrameSource(&pColorSource); // ...... 2 if (FAILED(hr)) { std::cerr << "Error : IKinectSensor :: get_ColorFrameSource ()" << std::endl; return -1; }
IColorFrameReader * pColorReader; // ...... 1 hr = pColorSource->OpenReader(&pColorReader); // ...... 2 if (FAILED(hr)) { std::cerr << "Error : IColorFrameSource :: OpenReader ()" << std::endl; return -1; }
unsigned int bufferSize = KINECT_V2_COLOR_WIDTH * KINECT_V2_COLOR_HEIGHT * 4 * sizeof(unsigned char); // ...... 2
while (true){ IColorFrame * pColorFrame = nullptr; hr = pColorReader->AcquireLatestFrame(&pColorFrame);
if (SUCCEEDED(hr)) { hr = pColorFrame->CopyConvertedFrameDataToArray(bufferSize, reinterpret_cast < BYTE *> (bufferMat.data), ColorImageFormat_Bgra); // ...... 6 if (SUCCEEDED(hr)) { cv::resize(bufferMat, colorImg, cv::Size(), 0.5, 0.5); // ...... 7 } } if (pColorFrame) pColorFrame->Release(); // Show Window cv::imshow("Color", colorImg); if (cv::waitKey(30) == VK_ESCAPE) { break; }
} return true; } |