OpenCV函数cvWaitKey(k)简介

2023-11-10

作者本人的开发环境为VS的MFC构架,结合OpenCV1.0进行图像的处理。可能很多像作者本人一样的初始开发程序员都会用到cvWaitKey(),但是对cvWaitKey()的理解一知半解,在具体开发中会由此产生一些困惑。在查询了一些资料后,将资料整理汇总如下:
    参考的网址如下:
      
http://zhidao.baidu.com/question/113288896
   http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=3324&start=0
   http://www.google.com.hk/search?hl=zh-CN&inlang=zh-CN&newwindow=1&safe=strict&client=aff-cs-360se&hs=kLG&q=%E4%B8%80%E7%A7%92%E5%BA%94%E8%AF%A5%E8%BE%93%E5%87%BA%E5%A4%9A%E5%B0%91%E5%B8%A7%EF%BC%9F&oq=%E4%B8%80%E7%A7%92%E5%BA%94%E8%AF%A5%E8%BE%93%E5%87%BA%E5%A4%9A%E5%B0%91%E5%B8%A7%EF%BC%9F&aq=f&aqi=&aql=&gs_sm=e&gs_upl=67155l89678l0l89948l15l14l0l3l0l2l286l1318l1.4.3l8l0

    首先,在cvWaitKey(k)中,k的单位为毫秒,1000毫秒等于1秒,同时,根据资料的说明,在显示图像的时候,每秒显示27、28帧的时候,我们看到的视频是流畅的。根据作者本人的实验和观察,如果每秒播放25帧视频,看到的视频仍然是流畅的。同时采取25帧的话,k=1000/25=40。即,没处理完一帧后,程序会等待40毫秒才会读取下一帧。在资料中,说明在mfc中cvWaitKey()中的k并无用处,但是,作者本人的程序中,k是正常的。虽然不甚明白原理,但是如果大家遇到同样的问题,可以如此尝试。
    关于cvWaitKey()的介绍,引用OpenCV中文论坛的解释:

    window平台下,cvWaitKey的源码:

 

[cpp]  view plain copy
  1. <span style="font-size:13px;">CV_IMPL int  
  2. cvWaitKey( int delay )  
  3. {  
  4.     int time0 = GetTickCount();  
  5.   
  6.     for(;;)  
  7.     {  
  8.         CvWindow* window;  
  9.         MSG message;  
  10.         int is_processed = 0;  
  11.   
  12.         if( (delay > 0 && abs((int)(GetTickCount() - time0)) >= delay) || hg_windows == 0 )  
  13.             return -1;  
  14.   
  15.         if( delay <= 0 )  
  16.             GetMessage(&message, 0, 0, 0);  
  17.         else if( PeekMessage(&message, 0, 0, 0, PM_REMOVE) == FALSE )  
  18.         {  
  19.             Sleep(1);  
  20.             continue;  
  21.         }  
  22.   
  23.         for( window = hg_windows; window != 0 && is_processed == 0; window = window->next )  
  24.         {  
  25.             if( window->hwnd == message.hwnd || window->frame == message.hwnd )  
  26.             {  
  27.                 is_processed = 1;  
  28.                 switch(message.message)  
  29.                 {  
  30.                 case WM_DESTROY:  
  31.                 case WM_CHAR:  
  32.                     DispatchMessage(&message);  
  33.                     return (int)message.wParam;  
  34.   
  35.                 case WM_KEYDOWN:  
  36.                     TranslateMessage(&message);  
  37.                 default:  
  38.                     DispatchMessage(&message);  
  39.                     is_processed = 1;  
  40.                     break;  
  41.                 }  
  42.             }  
  43.         }  
  44.   
  45.         if( !is_processed )  
  46.         {  
  47.             TranslateMessage(&message);  
  48.             DispatchMessage(&message);  
  49.         }  
  50.     }  
  51. }  
  52. </span>  


    可见cvWaitKey的内部除了sleep休眠之外, 还有重要的Message处理, 比如键盘消息, 字符等....这个消息处理结构对于写过Windows程序的人来说应该是很熟悉的.

    你可以做个极端一点的假设:

    如果没有cvWaitKey的话, 那么循环里面的每个指令执行时间为0.0000000001s,总之趋近于0.那么capture可能有10000帧图像, 那么10000帧图像也之需要0.000001s就播放完了, 结果你还没看到画面,就已经黑屏了 ....

    以上为作者对三个网页内容的总结整理。希望能帮到大家


本文转自 http://blog.csdn.net/yeqiu712/article/details/6974150

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV函数cvWaitKey(k)简介 的相关文章

  • 使用 cmake 和 opencv 对符号“gzclose”的未定义引用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我尝试构建该项目 doppia https bitbucket org rodrigob doppia 但发生链接错误 我想这是一
  • Python 函数前的星号[重复]

    这个问题在这里已经有答案了 我正在关注这个教程 http www pyimagesearch com 2015 04 20 sorting contours using python and opencv comment 405768 ht
  • 在 iPad 上使用 OpenCV 避免碰撞

    我正在开展一个项目 需要使用 OpenCV 实现碰撞避免 这是在 iOS 上完成的 iOS 5 及以上版本即可 项目目标 这个想法是将 iPad 安装在汽车仪表板上并启动应用程序 应用程序应该从相机中抓取帧并进行处理 以检测汽车是否会与任何
  • 如何将 OpenCV 等待键与 Chaquopy 一起使用

    我正在尝试使用 Chaquopy 将计算机视觉应用程序移植到 Android 当我尝试运行脚本时 以下行中出现以下错误 cv2 waitKey 100 打印到嵌入式 python 控制台的错误是 java chaquopy CQPEnv c
  • 如何使用requirements.txt 在 Heroku python Web 应用程序中安装 Dlib?

    我构建了一个涉及机器学习的 Python Flask Web API 但在 Heroku 上部署它时遇到了很多挫折 问题是 我的应用程序依赖于 Dlib 一个库 我似乎找不到在我的 Heroku 服务器中安装的方法 我正在试图解决这个问题
  • 在 Python 3.5 64 位上通过 pip 安装 OpenCV

    我尝试安装 OpenCV 但找不到任何合适的 pip 软件包 我决定上网查找有关如何安装它的官方文档 并发现this https opencv python tutroals readthedocs io en latest py tuto
  • 如何在Python中使用tcp套接字发送和接收网络摄像头流?

    我正在尝试重新创建这个项目 https github com hamuchiwa AutoRCCar 我拥有的是服务器 我的电脑 和客户端 我的树莓派 我所做的与原始项目不同的是我尝试使用一个简单的网络摄像头而不是树莓派摄像头将图像从我的
  • 计算两个描述符之间的距离

    我正在尝试计算已计算的两个描述符之间的距离 欧几里得或汉明 问题是我不想使用匹配器 我只想计算两个描述符之间的距离 我正在使用 OpenCV 2 4 9 并且我的描述符存储在 Mat 类型中 Mat descriptors1 Mat des
  • OpenCV:视频结束后如何重新启动?

    我正在播放视频文件 但播放完毕后如何再次播放 Javier 如果您想一遍又一遍地重新启动视频 也称为循环播放 可以通过在帧数达到时使用 if 语句来实现cap get cv2 cv CV CAP PROP FRAME COUNT 然后重置帧
  • 使用 opencv warpPerspective() 生成道路的自上而下视图

    我正在尝试实施逆透视映射计算与道路上另一辆车的距离 我知道在应用该函数之前我需要生成一个包含源点和目标点的变换矩阵warpPerspective 但我不知道如何计算目的地点 我在这个论坛和其他网站中搜索 但无法将第一张图片转换为第二张图片
  • 如何在给定目标大小的情况下在 python 中调整图像大小,同时保留纵横比?

    首先 我觉得这是一个愚蠢的问题 对此感到抱歉 目前 我发现计算最佳缩放因子 目标像素数的最佳宽度和高度 同时保留纵横比 的最准确方法是迭代并选择最佳缩放因子 但是必须有更好的方法来做到这一点 一个例子 import cv2 numpy as
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

    我在尝试从我的新 GoPro Hero 4 相机捕获实时流并使用 openCV 对其进行一些图像处理时遇到麻烦 这是我的试用 创建的窗口上没有显示任何内容 import cv2 import argparse import time imp
  • 我可以使用 openCV 比较两张不同图像上的两张脸吗?

    我对 openCV 很陌生 我看到它可以计算出脸部并返回一个矩形来指示脸部 我想知道 openCV 是否可以访问两张包含一张脸的图像 并且我希望 openCV 返回这两个人是否相同的可能性 Thanks OpenCV 不提供完整的人脸识别引
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont
  • 来自连接到远程机器的相机的 Opencv 流

    我正在用 python 开发一个 wx 应用程序 用于流式传输和显示来自两个不同网络摄像头的视频 这工作正常 但现在我需要在不同的场景中执行此操作 其中两个摄像头连接在通过网络连接的 Windows 上运行的单独计算机中 我的应用程序将在机
  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点
  • 当我将鼠标移到 Mat 关键字上时,Visual Studio 2017 冻结(OpenCv 3.4.1)

    我想在 Visual Studio 2017 中开发 openCv 项目 我下载了 opencv 预构建库并进行了必要的设置 那是 1 我添加了系统路径 build x64 vc14 bin 2 在 Visual Studio 中的项目属性
  • ffmpeg AVFrame 到 opencv Mat 转换

    我目前正在开发一个使用 ffmpeg 解码接收到的帧的项目 解码后 我想将 AVFrame 转换为 opencv Mat 帧 以便我可以在 imShow 函数上播放它 我拥有的是字节流 我将其读入缓冲区 解码为 AVFrame f fope
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h

随机推荐

  • PowerMTA 4.5邮件群发服务器安装配置

    说明 已基本实现邮件的发送功能 spf dkim和DMARC验证通过 用户名密码认证失败待后续排查验证 环境 OS CentOS 7 6 PowerMTA 4 5r11 域名 mydomain com 服务器公网IP X X X X 客户端
  • sql如何取前几行_sql 取前几行记录语句

    SQLITE数据库 代码如下 select from table limit N db2数据库 代码如下 select from tab fetch first 10 rows only oracle数据库 代码如下 select from
  • 静态测试和动态测试

    1 静态测试 静态测试 static testing 就是不实际运行被测软件 而只是静态地检查程序代码 界面或文档中可能存在的错误的过程 包括对代码测试 界面测试和文档测试三个方面 对于代码测试 主要测试代码是否符合相应的标准和规范 对于界
  • Asahi Linux for M1 Apple Silicon 首次发布 Alpha 版

    Apple Silicon 的基于 Arch 的发行版只能用于更轻松地安装 OpenBSD Asahi Linux已经为Apple M1 M1 Pro或M1 Max设备上的用户发布了其第一个公共alpha版本 该发行版基于Arch Linu
  • 快手开店怎么引流?快手小店自上线以来就吸引众多的商家入驻

    快手开店怎么引流 快手小店自上线以来就吸引众多的商家入驻 快手小店自上线以来就吸引众多的商家入驻 当然也有不少快手主播粉丝多了也会去卖货多赚点钱 在快手上面开店重视的还是流量 如何才能给店铺带来更多的流量呢 商家需要怎么做 下面一起来看快手
  • 程序员模式

    在我的心中 程序员是一个做事有计划 有思想 具有高超技术 解决能力的艺术家 自己作为一个程序员 自愧不能达到如上的标准 看到过一个程序员曾经这样自嘲 一个只有半瓶子水晃晃荡荡的程序员 这些年来一直从事开发的工作 稀里糊涂跑过许多城市 流浪过
  • Oracle环境变量配置步骤

    Oracle11g环境变量配置 在做开发的过程中 几次重装系统安装配置过Oracle 本篇博客就对oracle配置环境变量的细节做一次记录和分享 三个模块 Oracle11g的安装 instantclient 11 2客户端的安装 PLSQ
  • waiting for ZeroTier system service,

    查了好几个回答 waiting for ZeroTier system service这个错误是之前装过但是卸载后未删除干净造成的 我是卸载后删除了下边四个路径下的Zero Tier文件夹 然后重装就好了 Program Files Pro
  • Elasticsearch7.17 四 : ElasticSearch集群架构

    文章目录 ElasticSearch集群架构 核心概念 节点 分片 Primary Shard Replica Shard 集群状态和分片设定 集群搭建 安装Cerebro客户端 安装kibana ES安全认证 集群内部安全通信 开启并配置
  • Wireshark应用

    1 过滤IP 如来源IP或者目标IP等于某个IP 例子 ip src eq 192 168 1 107 or ip dst eq 192 168 1 107 或者 ip addr eq 192 168 1 107 都能显示来源IP和目标IP
  • ecshop缓存清理-限制或禁用ECShop缓存

    ECSHOP的缓存存放在templates caches 文章夹下 时间长了这个文件夹就会非常庞大 拖慢网站速度 还有很多情况我们不需要他的缓存 本文介绍禁用ECSHOP缓存的方法 ECSHOP的缓存有两部分 一部分是SMARTY的页面缓存
  • Unity 获取UI(RectTransform)四个角的屏幕坐标

    获取UI RectTransform 四个角的屏幕坐标 Vector3 corners new Vector3 4
  • oj2016: C语言实验——打印金字塔

    问题描述 输入n值 打印下列形状的金字塔 其中n代表金字塔的层数 作者 何知令 发表时间 2017年2月23日4 输入 输入只有一个正整数n 输出 打印金字塔图形 其中每个数字之间有一个空格 代码 问题描述 输入n值 打印下列形状的金字塔
  • 小m序列的verilog实现

    verilog实现及仿真 m sequence v 以x8 x4 x3 x2 1为例 module m sequence input sclk input rst n output wire m seq parameter POLY 8 b
  • 【每日一题】补档 ABC309F - Box in Box

    题目内容 原题链接 给定 n n n 个箱子 问是否存在一个箱子 x x x 是否可以放到另一个箱子 y
  • Java简单实现斗地主洗牌、发牌功能

    需求 在启动游戏房间的时候 应该提前准备好54张牌 完成洗牌 发牌 牌排序 逻辑 分析 当系统启动的同时需要准备好数据的时候 就可以用静态代码块了 洗牌就是打乱牌的顺序 定义三个玩家 依次发出51张牌 给玩家的牌进行排序 拓展 输出每个玩家
  • 如何编写测试用例?流程及5大编写步骤

    编写测试用例的5个步骤 1 选择测试工具 2 确定测试场景 3 编写测试用例 4 确认测试用例 5 组织测试用例 但在编写测试用例之前 测试人员需要充分了解软件的需求和规格 以确保测试用例能够覆盖所有的功能和场景 测试用例是一种用于验证软件
  • python 【组成最大数】

    组成最大数 小组中每位都有一张卡片 卡片上是6位内的正整数 将卡片连起来可以组成多种数字 计算组成的最大数字 输入描述 号分割的多个正整数字符串 不需要考虑非数字异常情况 小组最多25个人 输出描述 最大的数字字符串 示例1 输入 22 2
  • 2023年武汉市中等职业学校技能大赛 “网络搭建与应用”

    2023年武汉市中等职业学校技能大赛 网络搭建与应用 一 竞赛内容分布 网络搭建及应用 竞赛共分二个部分 其中 第一部分 企业网络搭建部署项目 占总分的比例为50 第二部分 企业网络服务配置及应用项目 占总分的比例为50 项目背景及网络拓扑
  • OpenCV函数cvWaitKey(k)简介

    作者本人的开发环境为VS的MFC构架 结合OpenCV1 0进行图像的处理 可能很多像作者本人一样的初始开发程序员都会用到cvWaitKey 但是对cvWaitKey 的理解一知半解 在具体开发中会由此产生一些困惑 在查询了一些资料后 将资