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

How to show different Frame per second of video in two window in opencv

本文关键字:显示 的视频 窗口 opencv 两个      更新时间:2023-10-16

我正在使用opencv来显示相机中的帧。我想在两个分隔窗口中显示这些帧。我想在第一个窗口中显示相机的真实帧(每30毫秒显示一帧),并在第二个窗口中延迟显示帧(这意味着它将在每1秒后显示帧)。有可能完成那项任务吗。我试着用我的代码做这件事,但它不太好用。请给我一个使用opencv和visualstudio2012来完成该任务的解决方案。提前感谢

这是我的代码

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
}

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

伪代码看起来像

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);
}