我正在使用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);
}