博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV gpu模块样例注释:video_reader.cpp
阅读量:4090 次
发布时间:2019-05-25

本文共 1800 字,大约阅读时间需要 6 分钟。

video_reader.cpp

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, const char* argv[]){ if (argc != 2) return -1; const std::string fname(argv[1]);//文件名 cv::namedWindow("CPU", cv::WINDOW_NORMAL);//创建显示CPU读入图像的窗口 cv::namedWindow("GPU", cv::WINDOW_OPENGL);//创建显示GPU读入图像的窗口 cv::gpu::setGlDevice();//设置CUDA并且为当前使用OpenGL的进程初始化,参数默认为0 cv::Mat frame;//用于存储CPU读入图像的数组 cv::VideoCapture reader(fname);//实例化一个 用CPU从文件组读入视频的类 cv::gpu::GpuMat d_frame;//用于存储GPU读入图像的数组 cv::gpu::VideoReader_GPU d_reader(fname);//实例化一个 用GPU从文件组读入视频的类 d_reader.dumpFormat(std::cout);//输出视频帧信息 cv::TickMeter tm; std::vector
cpu_times; std::vector
gpu_times; for (;;) { tm.reset(); tm.start();//计算CPU读入一帧的时间 if (!reader.read(frame)) break; tm.stop(); cpu_times.push_back(tm.getTimeMilli()); tm.reset(); tm.start();//计算GPU读入一帧的时间 if (!d_reader.read(d_frame)) break; tm.stop(); gpu_times.push_back(tm.getTimeMilli()); cv::imshow("CPU", frame);//显示CPU读入的视频 cv::imshow("GPU", d_frame);//显示GPU读入的视频 if (cv::waitKey(3) > 0)//如果等待时间大于3,就终止读入视频 break; } if (!cpu_times.empty() && !gpu_times.empty())//如果时间不为空 { std::cout << std::endl << "Results:" << std::endl; std::sort(cpu_times.begin(), cpu_times.end());//排序 std::sort(gpu_times.begin(), gpu_times.end()); double cpu_avg = std::accumulate(cpu_times.begin(), cpu_times.end(), 0.0) / cpu_times.size();//求CPU读入一帧的平均时间 double gpu_avg = std::accumulate(gpu_times.begin(), gpu_times.end(), 0.0) / gpu_times.size();//求GPU读入一帧的平均时间 std::cout << "CPU : Avg : " << cpu_avg << " ms FPS : " << 1000.0 / cpu_avg << std::endl;//输出平均时间和帧频 std::cout << "GPU : Avg : " << gpu_avg << " ms FPS : " << 1000.0 / gpu_avg << std::endl; } return 0;}
可能有的地方不准确,请大家指正!

转载地址:http://tvnii.baihongyu.com/

你可能感兴趣的文章
浅谈飞控开发的仿真功能
查看>>
我觉得在室内弄无人机开发装个防撞机架还是很有必要的,TBUS就做得很好。
查看>>
serial也是见到很多次了,似乎它就是一种串行通信协议
查看>>
TBUS的一些信息
查看>>
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
Ardupilot飞控Mavlink代码学习
查看>>
这些网站有一些嵌入式面试题合集
查看>>
我觉得刷题是有必要的,不然小心实际被问的时候懵逼,我觉得你需要刷个50份面试题。跟考研数学疯狂刷卷子一样!
查看>>
我觉得嵌入式面试三要素:基础吃透+项目+大量刷题,缺一不可。不刷题是不行的。而且得是大量刷,刷出感觉套路,别人做题都做得是固定题型套路条件反射了,你还在那慢慢理解慢慢推是不行的,也是考研的教训。
查看>>
删除docker容器和镜像的命令
查看>>
gazebo似乎就是在装ROS的时候一起装了,装ROS的时候选择的是ros-melodic-desktop-full的话。
查看>>
React + TypeScript 实现泛型组件
查看>>
TypeScript 完全手册
查看>>
React Native之原理浅析
查看>>
Git操作清单
查看>>
基础算法
查看>>
前端面试
查看>>
webpack4 中的 React 全家桶配置指南,实战!
查看>>
react 设置代理(proxy) 实现跨域请求
查看>>