opencv 计时 帧率
c++统计执行时间,单位 s。
#include <opencv2/opencv.hpp>double time0 = static_cast<double>(cv::getTickCount());
xxxxxx
time0 = ((double)cv::getTickCount() - time0) / cv::getTickFrequency();
std::cout << "time : " << time0 << std::endl;
C++版的getTickFrequency返回的是每秒钟的tick数
C版的cvGetTickFrequency返回的是每微妙的tick数
double t = (double)cvGetTickCount();
// 算法过程
t = (double)cvGetTickCount() - t;
printf( "run time = %gms\n", t/(cvGetTickFrequency()*1000) );
printf( "run time = %gs\n", t/(cvGetTickFrequency()*1000000) );
这//opencv 中如何进行程序的计时呢?
#include<opencv2/opencv.hpp>
using namespace cv;
#include<iostream>
using namespace std;
int main(void){
//查看opencv 读取一张图像所需要的时间
double time1 = static_cast<double>( getTickCount());//记录起始时间,其中getTickCount()函数返回CPU 自某个事件(如启动电脑)以来走过的时钟周期数
Mat img = imread("E:/testpicture/crystal.jpg");//通过绝对路径从指定文件夹 读取一张名字为 crystal的 图像,图像格式为 .jpg 注意读取图像必须指定格式
double time2 = (static_cast<double>( getTickCount()) - time1)/getTickFrequency();//获得了读取一张图像所需的时间单位为秒。 其中getTickFrequency()函数返回CPU一秒钟所走得时钟周期数。
cout<<"从文件中读取一张图像的时间是:"<< time2 <<"秒"<<endl;//输出运行时间
return 0;
}
int64 tStart = 0;
int64 tDuration = 0; tStart = getTickCount(); tDuration = getTickCount() - tStart; double fps = static_cast<double>(getTickFrequency() / tDuration);
int64 tStart = 0;
int64 tDuration = 0; tStart = getTickCount(); tDuration = getTickCount() - tStart; double fps = static_cast<double>(getTickFrequency() / tDuration);
printf("fps:%f\n",fps);
printf("fps:%f\n",fps);
计时函数
1. 纯C 高精度(100ns)测量慢
- #include <Windows.h>
- #include <stdio.h>
- int timer1_test()
- {
- LARGE_INTEGER start;
- LARGE_INTEGER end ;
- LARGE_INTEGER frequency;
- int i = 0;
- if (!QueryPerformanceFrequency(&frequency))
- {
- return -1;
- }
- QueryPerformanceCounter(&start); //开始计时
- // for (int i = 0; i < 100000; ++i)
- // {
- // ;// 用循环来测试计时
- // }
- Sleep(1);
- QueryPerformanceCounter(&end); //结束计时
- printf("main cost:%f\n", (double)(end.QuadPart - start.QuadPart) / (double)frequency.QuadPart); //打印for循环执行时间
- getchar();
- return 0;
- }
2.纯C 低精度(1ms)测量快
- #include <stdio.h>
- #include <time.h>
- void timer2_test()
- {
- clock_t start,end;
- start=clock();
- Sleep(1000);
- end=clock();
double duration = (double)(end - start); cout << "--> time: " << duration << " s" << endl; printf("time : %f ms \n",duration/1000);
double duration = (double)(end - start); cout << "--> time: " << duration << " s" << endl; printf("time : %f ms \n",duration/1000);- }
3.C++ OpenCV测试 高精度 view p copy
- #include"opencv.hpp"
- void timer3_test()
- {
- int64 start=0,end=0;
- start = getTickCount();
- Sleep(1000);
- end = getTickCount();
- cout << "The differences: " << 1000.0*(end - start)/getTickFrequency()<<" ms"<< endl;
- }
这个是在多线程下比较精确的
#include <time.h>
struct timespec time1={0,0};
struct timespec time2={0,0};
int main()
{
clock_gettime(CLOCK_REALTIME,&time1);
sRect result = tracker.update( frame);
clock_gettime(CLOCK_REALTIME,&time2);
///
sum_time += (time2.tv_sec-time1.tv_sec)*1000+(time2.tv_nsec-time1.tv_nsec)/1000000 ;
printf("time : %d ms \n", (time2.tv_sec-time1.tv_sec)*1000+(time2.tv_nsec-time1.tv_nsec)/1000000);
return 0;
}
<time.h>
struct timespec time1={0,0};
struct timespec time2={0,0};
int main()
{
clock_gettime(CLOCK_REALTIME,&time1);
sRect result = tracker.update( frame);
clock_gettime(CLOCK_REALTIME,&time2);
///
sum_time += (time2.tv_sec-time1.tv_sec)*1000+(time2.tv_nsec-time1.tv_nsec)/1000000 ;
printf("time : %d ms \n", (time2.tv_sec-time1.tv_sec)*1000+(time2.tv_nsec-time1.tv_nsec)/1000000);
return 0;
}
opencv 计时 帧率相关推荐
- 为什么OpenCV计算的帧率是错误的?
点击上方"LiveVideoStack"关注我们 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 作者:王伟 编辑:Alex 引 言 我们有一个平台来周期性 ...
- OpenCV-计时函数cv::getTickCountcv::getTickFrequency
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 场景需求 使用OpenCV时,如果有计时的需求,就记住两个函数cv::getTickCount和 ...
- iOS之深入探究动画渲染降帧
一.为什么要对动画降帧? 众所周知,刷新频率越高体验越好,对于 iOS app 的刷新频率应该是越接近越 60fps 越好,主动给动画降帧,肯定会影响动画的体验.但是另一方面,我们也知道动画渲染的过程 ...
- opencv获取摄像头帧率分辨率
python opencv 获取摄像头分辨率,设置摄像头分辨率 import cv2cap = cv2.VideoCapture(0)#先设置参数,然后读取参数cap.set(3,1280) # wi ...
- OpenCV~捕获摄像头 帧率fps和waitkey函数 问题
本文分析在使用OpenCV捕获摄像头时发现的两个问题: 使用capture.get(CV_CAP_PROP_FPS)方法获取帧率为0! waitKey()函数有几个作用?改变它的参数大小会影响计算得到 ...
- 【C++】【OpenCv】图片加噪声处理,计时,及键盘事件响应捕捉
图像噪声添加 cv::Mat addGuassianNoise(cv::Mat& src, double a, double b) {cv::Mat temp = src.clone();cv ...
- OpenCV 【十二】OpenCV如何扫描图像、利用查找表和计时
目录 OpenCV如何扫描图像.利用查找表和计时 1.函数计算时间测试case 2. Mat图像的存储机理 3. 像素遍历的3--4种方式 4. 实例 OpenCV如何扫描图像.利用查找表和计时 如何 ...
- opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用
opencv python 从摄像头获取视频.帧率.分辨率等属性设置和使用 文章目录: 1,为了获取视频,你应该创建一个 VideoCapture 对象.他的参数可以是设备的索引号,或者是一个视频文件 ...
- OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))
Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...
最新文章
- QCOW2 — 再谈 COW、ROW 快照技术
- golang RSA base64 加解密 签名验签
- CS224n笔记二:word2vec
- 必须掌握的八个cmd命令行
- 读书笔记 数据化营销
- dubbo原理和机制_面试官几个 Dubbo 微服务框架问题,把我整懵了?
- ROS main函数中订阅器的编写
- CANape中使用vCDMStudio批量标定
- 前端博站项目中遇到的问题总结
- 串操作指令---movs,stos,rep
- 随机存储器(RAM),只读存储器(ROM),高速缓存(CACHE),内存,硬盘,CPU
- PON光模块相关知识
- 河南理工大学计算机专业几本,河南理工大学是几本?河南理工大学是985或211吗...
- supervisor+cesi多服务器进程集中管理
- 算法分享: 动态规划之拱桥回文算法
- 域名与DNS域名系统
- mysql缩写月名转换_mysql数据库时间、字符串类型互转
- 京东 API接口:item_search - 按关键字搜索商品
- 985大学计算机专业保研率排名,中国高校保研率排名,前二十名多数是985大学
- WebBench压力测试工具(详细源码注释+分析)
热门文章
- java两行两行读取问文件,正则提取两行之间所有行内容方法.
- mega_[MEGA DEAL]带有Kotlin捆绑包的完整Android Oreo(95%折扣)
- android_通过高级应用程序开发策略在Android中进行用户参与
- clickhouse 新增列_ClickHouse入门记录
- mysql crm动态列设计_值得收藏:一份非常完整、详细的MySQL规范
- mac好用大java_好用,小个头大本事!Mac下轻量级清理软件。
- n个数求和 java_暴力+辗转相除法——N个数求和
- 合格的后端Coder都应该写好UT和Mock测试
- 如何优雅关闭 Spring Boot 应用
- 轻松高效玩转DTO(Data Transfer Object)