У меня есть код С++ -cli, который захватывает видео из папки в opencv с помощью захвата, а затем извлекает кадры с помощью кадра cvquery. Затем я обрабатываю кадры, и как только все кадры обработаны, я выпускаю захват. Он работает нормально, но когда я пытаюсь использовать многопоточность, он выдает предупреждение и не может захватить некоторые видео в папке с предупреждением «недостаточная блокировка потока вокруг avcodec _open/close ()».
//for each video in folder do
{
capture=cvCreateFileCapture(filename);
while(1)
{
img=cvqueryframe(capture)
if !img break;
///process img
}
cvreleasecapture(&capture);
}
Есть ли способ решить проблему с многопоточностью? Я думал об использовании
while(!capture)
capture=cvCreateFileCapture(filename);
но должен быть более эффективный способ, возможно, с помощью блокировки Monitor ::Enter (obj )или блокировки (obj )?