Я собираюсь выйти здесь на конечность и предположить, что вы хотите скопировать изображение с камеры последовательно, а затем работать с скопированными данными (IplImage) многопоточным способом.
Чтобы безопасно сделать это, как указал неизвестный парень, вы должны заблокировать память (или переменную (и)), к которой вы потенциально обращаетесь с вашими потоками. Очень короткий пример того, как это сделать с Windows CRITICAL_SECTION , выглядит следующим образом:
CRITICAL_SECTION cs;
/* Initialize the critical section -- This must be done before locking */
InitializeCriticalSection(&cs);
...
/* Release system object when all finished --
usually at the end of the cleanup code */
DeleteCriticalSection(&cs);
Теперь, когда вы получаете доступ к камере (или любому другому ресурсу с общим доступом), вы просто окружаете объект, к которому получаете доступ, следующими двумя строками:
EnterCriticalSection(&cs);
/* Operate on your shared data */
LeaveCriticalSection(&cs);
Окружение вашего кода (например, IplImage * frame = cvQueryFrame (xyz);) этими двумя строками должно исправить ваши коллизии ... но, похоже, ваш код мог бы помочь с немного большей организацией ..