# OpenCV, Freenect & OGRE libraries incompatible?

This topic is 2438 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi,

has anybody already successfully combined Freenect, OpenCV and OGRE?

I'm trying to add some 3D visualization features to a Freenect/OpenCV based application. The app itself works like a charm without OGRE. It also works with OGRE unless I load the "RenderSystem_GL" plugin. After successfully loading the plugin a memcpy crashes that works without "RenderSystem_GL" loaded.

As my application also uses pthreads, this sounds to me like some sort of synchronization issue.

I'd appreciate any kind of help.

Thanks!

Hendrik

//edit: alright. It seems indeed to be a synchronization issue. The crashing memcpys are called in the rgb- and depth-data callback called by Freenect like this:
 freenect_set_depth_callback(f_dev, depth_cb); // where depth_cb... freenect_set_video_callback(f_dev, rgb_cb); // ... and rgb_cb are the corresponding callback functions freenect_set_video_format(f_dev, FREENECT_VIDEO_RGB); freenect_start_depth(f_dev); // here freenect starts to call the mentioned callbacks whenever image data arrives from the Kinect RGB or IR cameras freenect_start_video(f_dev); 

Synchronization using mutexes doesn't seem to work. I lock two of them before I initialize OGRE and unlock them after the initialization. I also lock the corresponding mutex before the memcpy of the depth- respectively the rgb-data callback gets called and unlock it afterwards.

If I have understood correctly, pthread_mutex_lock should block as long as another thread has a lock on the same mutex, right? Why are the memcpys called then, although the corresponding mutexes are locked by another thread? Ah, just to mention: they are declared as [color="#0000ff"]volatile.