c++ - 从 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 的结构?谢谢
解决方案
因此,由于任务只是一个课程作业,我所做的是将整个视频帧加载到内存中(这不是一个好习惯),然后使用互斥锁从每个线程访问帧,视频大小很小(174MB)但我能够在我的记忆中以 5FPS 的速度存储视频,然后完成任务。但是,如果有任何其他通用或更好的解决方案(应该有),请在此处回复,感谢 BiOS 格式化代码:-)。
推荐阅读
- c# - 如何使用 C# 驱动程序计算 MongoDb Gridfs 中的元素
- javascript - 如何通过单击主窗体上的提交按钮来提交或发布三个部分视图的数据
- c++ - 出于某种原因,我不断收到此错误:'operator>>' 不匹配(操作数类型为'std::istream' {aka 'std::basic_istream
'} - amazon-web-services - AWS EFS 的接入点
- reactjs - JSX 值应该是表达式或引用的 JSX 文本 (8:19)
- c++ - 调试代码以写入 n 个斐波那契数的平方和的最后一位
- angular - 如何处理组件内部的 stroe 调度错误 Ngrx
- python - 验证失败。贝宝支付 API 出错。Python
- spring-batch - FlatFileItemReader 仅从 csv 文件中读取部分行,这会导致错误数量的令牌错误
- javascript - Divs 不堆叠,而是重叠