2014-07-19 3 views
0

내가 내 프로그램에서 비디오 스트림 설정을 변경하려면 작동하지 않지만,비디오 스트림 :: setVideoMode() 함수는

#include <OpenNI.h> 

int main() 
{ 
    OpenNI::initialize(); 
    Device device; 
    device.open(ANY_DEVICE); 
    VideoStream depthStream; 
    depthStream.create(device, SENSOR_DEPTH); 
    depthStream.start(); 

    VideoMode depthMode; 
    depthMode.setFps(20); 
    depthMode.setResolution(640, 480); 
    depthMode.setPixelFormat(PIXEL_FORMAT_DEPTH_100_UM); 
    depthStream.setVideoMode(depthMode); 

    ... 
} 

심지어 내가 변경 작동하지 않습니다 depthStream.start() 라인 setVideoMode() 기능 후,하지만 여전히 '아무튼 일하지 마라.

Fps를 24, 20, 5, 1로 변경했지만 아무 것도 변경하지 않았습니다.

p.s. : 이것은 오류 처리 기능이없는 간단한 코드입니다.


편집 :

답변 : 사랑 "api55"의 도움으로 내가 발견 비디오 모드의 내 장치 (키 넥트 엑스 박스)를 지원하는 하나 개의 모드 만 해당. 그래서 나는 그것을 바꿀 수 없다.

내에서만 지원되는 비디오입니다 : 내가 전에했던 code에 성공적으로 비디오 모드를 변경

FPS:30 
Width:640 
Height:480 

답변

2

. 나는 다른 값을 보존하고 단지 내가 원하는 것을 변경 스트림 내부에있는 비디오 모드를 얻을 수

rc = depth.create(device, openni::SENSOR_DEPTH); 
if (rc != openni::STATUS_OK) 
    error_manager(3); 

// set the new resolution and fps 
openni::VideoMode depth_videoMode = depth.getVideoMode(); 
depth_videoMode.setResolution(frame_width,frame_height); 
depth_videoMode.setFps(30); 
depth.setVideoMode(depth_videoMode); 

rc = depth.start(); 
if (rc != openni::STATUS_OK) 
    error_manager(4); 

먼저 다음 비디오 스트림을 생성 후에는 뭔가를해야한다. 귀하의 코드가 작동해야하지만 모든 설정이 모든 카메라에서 작동하는 것은 아닙니다. 가능한 설정을 확인하려면 openni::VideoStream::getSensorInfo 기능을 사용할 수 있습니다. 코드는 같은이해야 뭔가 확인 : 나는 코드의 마지막 조각을 테스트하지 않은

#include <OpenNI.h> 

int main() 
{ 
    OpenNI::initialize(); 
    Device device; 
    device.open(ANY_DEVICE); 
    VideoStream depthStream; 
    depthStream.create(device, SENSOR_DEPTH); 
    depthStream.start(); 

    SensorInfo& info = depthStream.getSensorInfo(); 
    Array& videoModes = info.getSupportedVideoModes(); 
    for (int i = 0; i < videoModes.getSize(); i++){ 
     std::cout << "VideoMode " << i << std::endl; 
     std::cout << "FPS:" << videoModes[i].getFps() << std::endl; 
     std::cout << "Width:" << videoModes[i].getResolutionX() << std::endl; 
     std::cout << "Height:" << videoModes[i].getResolutionY() << std::endl; 
    } 

    ... 
} 

을, 그래서 오류가있을 수 있습니다,하지만 당신은 그것의 아이디어를 얻을. 지원되는 설정은 각 카메라로 변경할 수 있지만, 나는 내 카메라에서 지원되는 FPS (15) 및 (30)

나는이 당신에게

+0

내 지원되는 비디오 모드를하는 데 도움이 이상한 희망했다 생각! 첫 번째 만 정상입니다. -? https://gist.github.com/mehdi1902/9e4d7308998d4ac82043 – Mehdi1902

+0

@ mehD 어떤 카메라를 사용하고 있습니까? 나는 primesense Carmine을 사용하고 있었고 항상 정상적인 값을 가지고있었습니다 ... 아마도 30fps에서 640x480 중 하나만 지원됩니다 ... 다른 것들은 전혀 이해가되지 않습니다. 이것은 내 결과입니다 https://github.com/cvlabbonn/tools_openni2/blob/master/possible_modes.txt – api55

+0

저는 Kinect Xbox 360을 사용하고 있습니다. 그래서 선택의 폭이 넓어졌습니다 : 하지만 저는 아닙니다 :( – Mehdi1902