Commit 40d8d11f authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

fixed RGBD capture with Asus Xtion (by Gary Bradski)

parent 682f31a0
...@@ -300,6 +300,7 @@ enum ...@@ -300,6 +300,7 @@ enum
CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK
CV_CAP_OPENNI =900, // OpenNI (for Kinect) CV_CAP_OPENNI =900, // OpenNI (for Kinect)
CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion)
CV_CAP_ANDROID =1000, // Android CV_CAP_ANDROID =1000, // Android
......
...@@ -409,10 +409,11 @@ private: ...@@ -409,10 +409,11 @@ private:
class CvCapture_OpenNI : public CvCapture class CvCapture_OpenNI : public CvCapture
{ {
public: public:
enum { DEVICE_DEFAULT=0, DEVICE_MS_KINECT=0, DEVICE_ASUS_XTION=1, DEVICE_MAX=1 };
static const int INVALID_PIXEL_VAL = 0; static const int INVALID_PIXEL_VAL = 0;
static const int INVALID_COORDINATE_VAL = 0; static const int INVALID_COORDINATE_VAL = 0;
#ifdef HAVE_TBB #ifdef HAVE_TBB
static const int DEFAULT_MAX_BUFFER_SIZE = 8; static const int DEFAULT_MAX_BUFFER_SIZE = 8;
#else #else
...@@ -516,8 +517,10 @@ XnMapOutputMode defaultMapOutputMode() ...@@ -516,8 +517,10 @@ XnMapOutputMode defaultMapOutputMode()
return mode; return mode;
} }
CvCapture_OpenNI::CvCapture_OpenNI( int index ) CvCapture_OpenNI::CvCapture_OpenNI( int index )
{ {
int deviceType = DEVICE_DEFAULT;
XnStatus status; XnStatus status;
isContextOpened = false; isContextOpened = false;
...@@ -525,6 +528,15 @@ CvCapture_OpenNI::CvCapture_OpenNI( int index ) ...@@ -525,6 +528,15 @@ CvCapture_OpenNI::CvCapture_OpenNI( int index )
isCircleBuffer = DEFAULT_IS_CIRCLE_BUFFER; isCircleBuffer = DEFAULT_IS_CIRCLE_BUFFER;
maxTimeDuration = DEFAULT_MAX_TIME_DURATION; maxTimeDuration = DEFAULT_MAX_TIME_DURATION;
if( index >= 10 )
{
deviceType = index / 10;
index %= 10;
}
if( deviceType > DEVICE_MAX )
return;
// Initialize and configure the context. // Initialize and configure the context.
status = context.Init(); status = context.Init();
if( status != XN_STATUS_OK ) if( status != XN_STATUS_OK )
...@@ -620,6 +632,14 @@ CvCapture_OpenNI::CvCapture_OpenNI( int index ) ...@@ -620,6 +632,14 @@ CvCapture_OpenNI::CvCapture_OpenNI( int index )
CV_DbgAssert( imageGenerator.SetMapOutputMode(defaultMapOutputMode()) == XN_STATUS_OK ); CV_DbgAssert( imageGenerator.SetMapOutputMode(defaultMapOutputMode()) == XN_STATUS_OK );
} }
if( deviceType == DEVICE_ASUS_XTION )
{
//ps/asus specific
imageGenerator.SetIntProperty("InputFormat", 1 /*XN_IO_IMAGE_FORMAT_YUV422*/);
imageGenerator.SetPixelFormat(XN_PIXEL_FORMAT_RGB24);
depthGenerator.SetIntProperty("RegistrationType", 1 /*XN_PROCESSING_HARDWARE*/);
}
// Start generating data. // Start generating data.
status = context.StartGeneratingAll(); status = context.StartGeneratingAll();
if( status != XN_STATUS_OK ) if( status != XN_STATUS_OK )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment