我一直试图使用pthread并行地使用C ++ OpenCV VideoWriter保存视频帧,同时在另一个线程中使用V4L2(Ubuntu PC)将帧出队。
到目前为止,我一直在全局声明Videowriter对象,而没有将任何参数传递给pthread。但是,我只能在该应用程序的一次运行中写入1个视频文件。
Videowriter video('filename.avi', CV_FOURCC('M','J','P','G'), 30, Size(1920, 1080));
Mat img;
void *get_image(void *)
{
//dequeue v4l2 img
}
void *create_video(void *)
{
video.write(img)
}
int main()
{
i = 0;
pthread_t tid1, tid2;
//dequeue v4l2 first frame img
while(i<1000)
{
pthread_create(&tid1, NULL, &create_video, NULL);
pthread_create(&tid2, NULL, &get_image, NULL);
pthread_join(tid1, NULL);
pthread_join(tid2, NULL);
i++;
}
return 0;
}
我想避免使用全局Videowriter对象,因此可以在运行时(FPS)更改要保存的视频的参数,并通过在运行时创建多个视频文件来编写来自不同提要的不同视频。
有人可以建议实现此目标的方法吗?谢谢。