티스토리 뷰

사실... 키넥트와 관련해 개발한다 하면 누구나 다 알법한 이야기인데, 혹시 나처럼 처음 접하고 헤매이는 사람들을 위해 오늘의 교훈을 남겨둔다.

키넥트 V2가 나오면서 Kinect studio v2도 나온 것으로 알고 있다. 이 유틸리티에는, 키넥트가 연결되어있지 않아도 마치 키넥트로부터 정보가 전송되는 듯한 환경을 만들어 주는 기능이 있는데 바로 recording 기능이다. 익숙한 녹화 버튼(빨간색 동그라미)을 누르고 키넥트 앞에서 휘적휘적 한 뒤 중지시키면 자동으로 '내문서-Kinect studio-repository' 폴더에 날짜와 시간이 찍혀서 xef파일로 저장된다. 이를 kinect studio에서 다시 열어주고 재생하면 개발 중인 응용 프로그램에서 마치 지금 키넥트로 정보를 받고 있는 듯 녹화된 화면이 나온다. 여기까지는 쉽다.

Kinect Studio의 Record화면. 화살표가 가리키는 녹화 버튼을 누르고, 키넥트 앞에서 휘적대면 그 모습이 그대로 녹화대고, 키넥트 없이도 파일을 열어 재생하는 것만으로 개발 환경을 동일하게 가져올 수 있다. 하지만, 아무리 해도 컬러는 녹화가 안됐다!!!

나의 문제는 항상 흔한 해결책 이상의 무언가를 요구한다... 확실히는 모르겠다만, kinect studio의 녹화는 아무리 해도 RGB이미지가 누락된다. 녹화 버튼을 누르기 전에 무엇을 녹화본에 포함시킬 지를 선택할 수 있는데, uncompressed color 항목을 선택해도 되지를 않는다. 그래서 키넥트 개발을 하려면 항상 키넥트 앞에 있어야 했다. 분명 녹화 기능이 있고, 이 녹화파일이 있으면 언제 어디서든 개발을 할 수 있는데, 전혀 써먹을 수를 없었다!

오늘 결판을 내보자고 달라붙어보니 키넥트 녹화본에는 XEF파일이 있고, XRF파일이 있다고 한다. 이 중, XRF가 그야말로 날것의 싱싱한 데이터 (raw data)란다. 혹시 이 확장자로 저장을 하면 컬러 이미지도 파일에 포함되지 않을까 해서 kinect studio의 설정을 마구 뒤져 보았는데, 그런건 취급 안했다. 또 낙담하고 있다가, 문득 마이크로소프트 페이지에서 본 KSUtil.exe에 관한 설명이 떠올랐다.

이 파일은 kinect studio 아이콘으로부터 파일 위치 열기를 반복해가다보면 나타난다. 그리고 이 파일을 커맨드라인에서 잘 다뤄주면 컬러 이미지까지 온전하게 나오는 xrf파일이 생성됨을 확인했다. 방법은 다음과 같다

  • 실행 - cmd
  • cd "C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Tools\KinectStudio"

내 경우에는 경로가 다음과 같았다. 폴더 이동을 해주고,

  • KSUtil.exe -record c:\kinectREC\single.xrf 10 -stream depth ir body color

위와 같이 KSUtil.exe에 이어서 -record [저장경로 및 파일명.xrf] [녹화시간(초)]를 붙이고, 이어서 -stream [녹화하고자 하는 데이터: 깊이, 적외선, 바디, 컬러 등]을 붙이고 엔터를 치면 잠시 뜸을 들인 뒤 바로 녹화를 진행한다. 도스 명령 창에서는 아무것도 보이질 않으니, kinect sdk browser에서 color basic나 depth basic를 하나 실행시켜서 화면 상 자신의 위치를 확인할 수 있게 한 뒤 명령을 실행하길 권한다.

이후 녹화 파일을 재생하고자 하면 다음과 같이 입력하면 된다. 여기서, -loop [횟수] 는 재생을 반복할 횟수이다. 지속적으로 개발의 피드백을 받고 싶다면 이 횟수를 100 이상으로 높게 잡으면 되겠다.

  • KSUtil.exe -play c:\kinectREC\single.xrf -loop 2

SDK browser에서 color, body, face basic을 모두 열어두고 cmd에서 녹화한 파일을 play하는 명령을 친 뒤 캡쳐한 화면. Visual studio에서 개발을 하다가 확인을 위해 start를 눌러도 버그가 있지 않는 한 동일한 결과가 나온다.

댓글
  • 프로필사진 ㅇㅅㅇ 잘 배워갑니다!!
    혹시 키넥트에서 제가 녹화한거 말고 다른사람들이 이미 녹화한 비디오를 재생시킬 수 있을까요??
    2017.10.13 19:27 신고
댓글쓰기 폼