首页 > 其他分享 >OpenCV(cv::getTickCount()、cv::getTickFrequency())

OpenCV(cv::getTickCount()、cv::getTickFrequency())

时间:2024-09-02 16:47:12浏览次数:9  
标签:滴答 OpenCV getTickCount int64 时钟 cv getTickFrequency

目录



getTickCount()getTickFrequency() 是 OpenCV 库中的两个函数,通常用于获取高精度的时间间隔。这两个函数主要用于计时和性能测量。



1. getTickCount()

getTickCount() 函数用于返回从系统启动到当前为止的时间滴答数(ticks)。一个 "tick" 是一个时钟周期的计数,通常与 CPU 时钟或操作系统时钟的分辨率相关。

  • 原型:

    int64 getTickCount();
    
  • 返回值:
    返回一个 64 位的整数,这个整数表示自系统启动以来的滴答数(tick count)。

  • 使用场景:
    getTickCount() 常用于测量程序中某段代码的执行时间。因为 getTickCount() 返回自系统启动以来的滴答数,因此我们可以在代码的不同部分调用 getTickCount() 来测量这些滴答数之间的差值,并结合系统时钟频率(即每秒的滴答数)来计算执行时间。

  • 示例:

    int64 start = cv::getTickCount();
    
    // 执行一些操作
    doSomeProcessing();
    
    int64 end = cv::getTickCount();
    double timeInSeconds = (end - start) / cv::getTickFrequency();
    
    std::cout << "Processing time: " << timeInSeconds << " seconds." << std::endl;
    

    在上述代码中,getTickCount() 在操作前后调用,得到两个滴答数 startend,通过两者的差值可以得到操作的执行时间,随后除以 getTickFrequency() 获取以秒为单位的时间。



2. getTickFrequency()

getTickFrequency() 函数返回每秒的滴答数(即滴答频率),这个频率是固定的,它表示每秒内系统时钟产生的滴答数。

  • 原型:

    double getTickFrequency();
    
  • 返回值:
    返回一个双精度浮点数,表示系统时钟每秒产生的滴答数。

  • 使用场景:
    getTickFrequency() 通常与 getTickCount() 配合使用,用于将滴答数转化为秒。因为滴答频率表示每秒的滴答数,所以在计算某段时间的滴答差值时,可以将其除以滴答频率来得到以秒为单位的时间。

  • 示例:

    double freq = cv::getTickFrequency();
    std::cout << "Tick frequency: " << freq << " ticks per second." << std::endl;
    

    在这个例子中,getTickFrequency() 返回了当前系统的时钟频率。



3. 综合应用

两者结合使用通常用来测量时间,例如,可以计算某段代码的执行时间:

int64 start = cv::getTickCount();  // 获取起始滴答数

// 执行的任务
doSomeProcessing();

int64 end = cv::getTickCount();  // 获取结束滴答数

// 计算滴答差值
int64 ticks = end - start;

// 计算执行时间(秒)
double timeInSeconds = ticks / cv::getTickFrequency();

std::cout << "Time elapsed: " << timeInSeconds << " seconds." << std::endl;


4. 注意事项

  • getTickCount() 返回的滴答数从系统启动时开始累积,如果系统重启,这个值将重置为 0。
  • getTickFrequency() 是一个固定值,通常由系统硬件或操作系统决定。

这两个函数是非常高效的用于时间测量的工具,尤其适用于实时系统、图像处理等需要精确时间控制的领域。



标签:滴答,OpenCV,getTickCount,int64,时钟,cv,getTickFrequency
From: https://www.cnblogs.com/keye/p/18392999

相关文章

  • OpenCV(图像NaN处理)
    目录1.目的2.示例1.目的将src矩阵中的某些区域(由mask指定的非零区域)设置为NaN。SetToNan函数实现了这一功能。2.示例#include<iostream>#include<opencv2/opencv.hpp>usingnamespacestd;usingnamespacecv;voidSetToNan(cv::Mat&src,constcv::Mat......
  • OpenCV绘图函数(14)图像上绘制文字的函数putText()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述在图像上绘制指定的文本字符串。cv::putText函数在图像上绘制指定的文本字符串。无法使用指定字体渲染的符号会被问号(?)替换。关于文本渲染的具体示例可以参考getTextSize函数......
  • OpenCV绘图函数(15)图像上绘制矩形函数 rectangle()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述绘制一个简单的、粗的或填充的直立矩形。这个函数cv::rectangle绘制一个矩形轮廓或一个填充的矩形,其两个相对的顶点分别是pt1和pt2。函数原型1voidcv::rectangle( Inpu......
  • CMake构建学习笔记13-opencv库的构建
    OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习软件库,旨在提供一个跨平台的、易于使用的、快速执行的计算机视觉接口。如果只是简单的使用,其实不必要像笔者这样使用源代码进行构建,直接使用官方提供的二进制安装包即可。一般来说,需要从源代码进行构建......
  • LaViT:这也行,微软提出直接用上一层的注意力权重生成当前层的注意力权重 | CVPR 2024
    Less-AttentionVisionTransformer利用了在多头自注意力(MHSA)块中计算的依赖关系,通过重复使用先前MSA块的注意力来绕过注意力计算,还额外增加了一个简单的保持对角性的损失函数,旨在促进注意力矩阵在表示标记之间关系方面的预期行为。该架构你能有效地捕捉了跨标记的关联,超越了基线......
  • 【全网独家】OpenCV: 缩写(uchar、ushort、Vec) 介绍与应用
    1.缩写介绍uchar定义:unsignedchar,即无符号字符类型。范围:0到255。应用:常用于存储灰度图像的像素值。ushort定义:unsignedshort,即无符号短整型。范围:0到65535。应用:在高动态范围(HDR)图像处理中使用较多,因为它能表示更宽的数值范围。Vec定义:OpenCV中的模板类,用于......
  • 春秋云镜CVE-2022-28512
    目录1:开启靶机访问2:根据提示确定目标点3:访问该路径/single.php,并且id传参发现单引号闭合4:访问该路径/single.php,并且id传参,发现十个字段1:开启靶机访问2:根据提示确定目标点3:访问该路径/single.php,并且id传参发现单引号闭合4:访问该路径/single.php,并且id传参,发现九......
  • 春秋云镜CVE-2022-29464 (WSO2文件上传漏洞)
    目录一:访问靶机:2:根据提示知道可以文件上传3:两个方法一:访问靶机:2:根据提示知道可以文件上传3:我们两个方法1:使用EXPimportrequestsimporturllib3urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)url=input("请输入URL:")file="shell.jsp"pa......
  • 春秋云镜CVE-2022-28525(ED01-CMS v20180505 存在任意文件上传漏洞)
    1:访问靶机发现是登录界面2:尝试使用弱口令爆破(明文传输)3:添加pyload并选择攻击类型字典我们随便选择的,实际情况需要实际定义爆破成功,用户名:admin密码:admin登录成功4:找到如图模块,上传图片马上传成功(上传时需要抓包改上传类型)5:使用蚁剑连接,拿到flag......
  • [转]OpenCV4.8 GPU版本CMake编译详细步骤 与CUDA代码演示
    导读本文将详细介绍如何使用CMake编译OpenCV4.8CUDA版本并给出Demo演示,方便大家学习使用。CMake编译详细步骤废话不多说,直接进入正题!【1】我使用的工具版本VS2017+CMake3.18.2+OpenCV4.8.0+CUDA11.2一般情况下VS版本≥VS2017均可,CMake版本≥3.18.2,OpenCV......