opencv 读取一帧时间及imshow耗时

本文通过测试i7电脑上使用Opencv读取特定尺寸视频帧的速度,发现在包含读取与显示操作时,平均每帧耗时约16ms,单独读取操作仅需0.7~1.2ms,而显示操作则需15ms左右。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

由于想知道自己电脑i7 使用opencv读取一帧速度,测试视频大小为480*640,发现当使用VideoCapture::read()读取一帧,并用imshow显示图像,总共需耗时16ms左右,相当于每秒66帧左右,分别对两个函数测试时,发现单读取一帧只需0.7~1.2ms,而使用imshow显示图像则函数较为严重,显示一帧需15ms左右。当然不同大小和格式的视频,读取时间则有所不同。

二、代码

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

#include <iostream>
#include "MyTimer.h"

int main()
{
	//VideoCapture cap("umn_dataset/Crowd-Activity-All.avi");
	VideoCapture cap("2.avi");

	if (!cap.isOpened()){
		std::cerr << "无法获取视频\n";
	}

	Mat srcImg ,grayImg;
	MyTimer timer;
	namedWindow("Demo", 1);
	timer.Start();
	while (cap.read(srcImg)){

		timer.End();
		std::cout << "获取一帧耗时:" << timer.costTime << "\n";
		timer.Reset();

		timer.Start();
		imshow("Demo", srcImg);
		waitKey(1);
		timer.End();
		std::cout << "imshow耗时:" << timer.costTime << "\n";
		timer.Reset();
		timer.Start();

	}

	return 0;
}

三、结果










评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值