본문 바로가기
영상처리/OpenKinect

Kinect + OpenCV

by 목가 2011. 1. 4.
반응형

영상처리를 하는 많은 사람들이 OpenCV를 접해 봤을 것이고 많이 사용하고 있기 때문에

연구용으로 OpenCV와 Kinect를 연동할 필요가 있다.

따라서 OpenCV에서 Kinect를 사용할 수 있도록 CL-NUI-Platform을 설치하고 라이브러리를 가져다가 쓴다.

너무너무너무 쉽게 OpenCV에서 가져다가 쓸 수 있다.

일단 CL-NUI-Platform-1.0.0.1121.exe파일을 설치하고 도구-옵션에 가셔서 include와 lib폴더를 추가시켜준다.

그리고 lib, dll파일은 해당 프로젝트 파일에 셋팅 시키면된다.(OpenCV를 쓰는 사람들이라면 다들 한 번씩 해봤기 때문에

자세한 설명은 생략하도록 하겠다.)

설치도 완료하고 셋팅도 다 되었다면, 매우 간단하게 소스를 작성해보자.

#include <stdio.h>
#include <highgui.h>
#include <cv.h>
#include <CLNUIDevice.h>


int main()
{

 int nRetCode = 0;
 IplImage *img_color;
 IplImage *img_depth;

 img_color = cvCreateImage(cvSize(640,480), 8U, 3);
 img_depth= cvCreateImage(cvSize(640,480), 8U, 4);
 
 CLNUICamera KinectCamera = CreateNUICamera();
 
 if(!StartNUICamera(KinectCamera))
 {
   printf("Could Not Start Kinect Camera");
   nRetCode = 1;
   return nRetCode;
 }

 PDWORD datadepth = (PDWORD) malloc(640*480*4);
 PBYTE datacolor = (PBYTE) malloc(640*480*3);
 PUSHORT m_pDepthRaw;// = (PUSHORT) malloc(640*480); // 우선 뎁스값 받아들이기 위한 배열 선언
 m_pDepthRaw = new USHORT[640*480]; // 메모리 생성


 cvNamedWindow( "Depth", 1 );
 cvNamedWindow( "RGB", 1 );

 while(1)
 {
  GetNUICameraDepthFrameRGB32(KinectCamera, datadepth, 0);
  cvSetData(img_depth, datadepth, img_depth->widthStep);
  GetNUICameraColorFrameRGB24(KinectCamera, datacolor, 0);
  cvSetData(img_color, datacolor, img_color->widthStep);

  GetNUICameraDepthFrameRAW(KinectCamera, m_pDepthRaw, 0); // CL NUI API

  cvShowImage( "Depth", img_depth);
  cvShowImage( "RGB", img_color);

  if( cvWaitKey(1) == 'q')
  {
   cvSaveImage("rgb.jpg",img_color);
   cvSaveImage("depth.bmp",img_depth);
   break;
  }
 }

 StopNUICamera(KinectCamera);

 cvDestroyWindow("Depth");
 cvDestroyWindow("RGB");
 cvReleaseImage(&img_color);
 cvReleaseImage(&img_depth);  
 
 
 return 0;

}

난 설치를 잘못했는지 CLNUICamera를 못 읽어와서 헤맸는데 다시 지우고 처음부터 설치하니깐 해결됐다.

위 소스를 실행 시키면 결과는 다음과 같이 나온다. Depth에 따라서 컬러가 다르게 나옴

반응형

'영상처리 > OpenKinect' 카테고리의 다른 글

Open Kinect (OpenNI 설치 및 실행)  (6) 2011.01.04

댓글