我有一个 c++-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) 或 lock(obj)?