我用C ++编写了一个软件,用于处理来自摄像机的视频流,使用openCV库。 我想在处理视频帧时保存视频帧,以便可以使用与输入完全相同的视频多次离线运行代码。 我正在考虑使用Producer / Consumer Pattern来使用多线程。
我的想法是拥有一个制作人(帧抓取器)和两个消费者(一个用于处理图像,另一个用于保存文件中的帧(视频))。
我没有多线程编程经验,所以我在互联网上搜索了一些教程。 我发现的所有教程都是关于一个生产者和一个消费者,但我需要的是略有不同:我需要的是生产者向两个消费者发送相同的图像,并且在两个消费者完成他们的工作之后,继续下一个帧。关键是生产者有一个存储帧的队列,而消费者都需要从同一个队列中读取一次相同的元素。
你有什么建议吗? 你认为我选择的模式符合我的需要吗?
感谢。
答案 0 :(得分:1)
制片人 - 消费者的作品。在您的情况下,生产者可以“生产”两次,首先将其放入处理队列,然后将第二个副本放入保存队列。