C++ OpenCV cvMAT 回放

标签 c++ opencv

我有一个 cvMat 类型的 vector ,我一直在其中存储从我的计算机网络摄像头拍摄的帧。存储 100 帧后,我想回放这些帧。如果 record 是我的 cvMats vector ,我想这可能是这样完成的:

cvNamedWindow("play-back",CV_WINDOW_AUTOSIZE);
cvMoveWindow("play-back",100,100);
for (vector<Mat>::iterator iter = record.begin(); iter != record.end();++iter) {
   imshow("play-back",*iter);
}

执行时,该程序似乎可以很好地存储 cvMats 并从网络摄像头获取输入,但是当我尝试播放时,该程序似乎执行该部分代码的速度非常快——实际上非常快,我没有时间欣赏结果。我怎样才能改进这段代码,使播放不那么仓促?

最佳答案

您需要控制 OpenCV 以实际渲染窗口中的每个图像,并在切换到下一个之前将其保持一小段时间。您应该添加对 cvWaitKey 的调用延迟为 41 毫秒(约 24 帧/秒)。然后你可以检查cvWaitKey的返回值,以便用户可以停止播放。像这样:

cvNamedWindow("play-back",CV_WINDOW_AUTOSIZE);
cvMoveWindow("play-back",100,100);
for (vector<Mat>::iterator iter = record.begin(); iter != record.end();++iter) {
   imshow("play-back",*iter);
   if( cvWaitKey(41) == 27 ) // ESC
       break;
}

关于C++ OpenCV cvMAT 回放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084109/

相关文章:

python - 如何在OpenCV中将某个RGB值的所有像素替换为另一个RGB值

python-3.x - OpenCV中实现的立体BM和SGBM算法中的散斑是什么

c++ - 移出范围后,指向 __FILE__ 的指针是否仍然有效?

c++ - 使用 inet_pton() 检查给定 IP 是否属于 IP 范围的一部分

python - 从 Python 调用这个 OpenCV 函数的正确方法是什么?

python - 如何检测一个点是否包含在边界矩形内 - opencv & python

opencv - 冰雹后的凹痕检测

c++ - Web服务中的 "Backlog"是什么?

c++ - 帮助 C++ 中的 SNMP?

c++ - std::find on map 无法正常运行并遍历 map 的键和值