如何在不使用全局Videowriter变量的情况下将opencv Videowriter对象作为参数传递给pthread?

时间:2019-09-30 01:55:43

标签: c++ opencv video pthreads

我一直试图使用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)更改要保存的视频的参数,并通过在运行时创建多个视频文件来编写来自不同提要的不同视频。

有人可以建议实现此目标的方法吗?谢谢。

0 个答案:

没有答案