如何在opencv的两个窗口中显示每秒不同的视频帧数

时间:2015-06-25 13:24:05

标签: c++ opencv visual-studio-2012

我正在使用opencv来显示来自相机的帧。我想在两个分离窗口中显示帧。我希望从相机显示真实帧到第一个窗口(每30毫秒后显示帧)并在第二个窗口中显示帧有一些延迟(这意味着它将在每1秒后显示帧)。是否有可能完成这项任务。我尝试用我的代码来做它,但它不能很好地工作。请使用opencv和visual studio 2012给我一个解决方案来完成这项任务。提前致谢

这是我的代码

VideoCapture cap(0);
if (!cap.isOpened())
{
    cout << "exit" << endl;
    return -1;
}
namedWindow("Window 1", 1);
namedWindow("Window 2", 2);
long count = 0;
Mat face_algin;
while (true)
{
    Mat frame;
    Mat original;
    cap >> frame;
    if (!frame.empty()){
        original = frame.clone();           
        cv::imshow("Window 1", original);
        }
    if (waitKey(30) >= 0) break;// Delay 30ms for first window
}

1 个答案:

答案 0 :(得分:-1)

您可以编写循环以在视频文件名作为参数的单个函数中显示帧,并通过多线程同时调用它们。

伪代码看起来像,

void* play_video(void* frame_rate)
{
    // play at specified frame rate
}
main()
{
    create_thread(thread1, play_video, normal_frame_rate);
    create_thread(thread2, play_video, delayed_frame_rate);
    join_thread(thread1);
    join_thread(thread2);
}