首页 > 解决方案 > 从 Cpp 中的多线程 Opencv 捕获视频

问题描述

我是 Cpp 和 opencv 的学习者,我正在尝试从多个线程访问相同的视频,并且在这样做的同时,我遇到了死锁,这是可以预料的

我正在创建 n 个线程并尝试通过将视频分成 n 部分来处理视频,并同时在不同的线程中处理它。这是我的 void 函数。我找到了一些 python 解决方案,但无法理解。

void *finddensity(void *videoinfo)
{
    VideoCapture cap(video.mp4);

    //do some processing on each frame
}

然后我正在使用 pthread_create 创建线程 有什么方法可以访问视频以避免任何死锁,并且还有 videoinfo 的结构?谢谢

标签: c++multithreadingopencv

解决方案


因此,由于任务只是一个课程作业,我所做的是将整个视频帧加载到内存中(这不是一个好习惯),然后使用互斥锁从每个线程访问帧,视频大小很小(174MB)但我能够在我的记忆中以 5FPS 的速度存储视频,然后完成任务。但是,如果有任何其他通用或更好的解决方案(应该有),请在此处回复,感谢 BiOS 格式化代码:-)。


推荐阅读