본문 바로가기
연구중/Sensors

KINECT 개발 환경 구축 및 OPENCV 연동

by 루티즈 2018. 5. 28.
반응형

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.50.5);    // ...... 7

            }

        }

        if (pColorFrame)

            pColorFrame->Release();

        // Show Window

        cv::imshow("Color", colorImg);

        if (cv::waitKey(30== VK_ESCAPE) {

            break;

        }

 

    }

        return true;

}

Colored by Color Scripter

cs

 





반응형