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