OpenCV C++ 设置视频采集分辨率与性能测试

程一诺
程一诺
发布时间:2026-10-11| 2人浏览过
原创

在基于 OpenCV 的 C++ 视频处理应用中,合理设置摄像头分辨率是平衡画质与处理性能的关键。本文演示如何通过 VideoCapture 接口指定采集参数,并利用标准库计时函数量化不同分辨率下的帧获取耗时。

OpenCV 设置采集视频分辨率方式

在使用 OpenCV 进行视频流捕获时,摄像头硬件通常支持多种分辨率模式。开发者可以通过 VideoCapture 对象的 set 方法显式指定帧的宽度和高度。需要注意的是,并非所有摄像头都支持所有分辨率设置,若硬件不支持请求的参数,OpenCV 通常会回退到默认或最接近的可用分辨率。

根据实测数据,不同分辨率对采集耗时有显著影响:

  • 1920x1080 采集用时约 0.1s
  • 1080x720 采集用时约 0.04s
  • 640x480 采集用时约 0.02s

由此可见,降低分辨率可以显著减少单次采集的时间开销,适用于对实时性要求较高的场景。

代码实现与性能验证

以下 C++ 代码展示了如何初始化摄像头、设置分辨率,并在循环中捕获帧、显示图像、保存截图,同时计算每帧的处理耗时。

#include <opencv2\opencv.hpp> 
 
#include<ctime>
using namespace cv; 
using namespace std;
 
int main( ) 
{ 
	//【1】从摄像头读入视频
	VideoCapture capture(0);
 
	//【2】循环显示每一帧
	int j=0;
 
	 capture.set(CV_CAP_PROP_FRAME_WIDTH, 1080); 
  capture.set(CV_CAP_PROP_FRAME_HEIGHT,720); 
	while(1&&(j<100)) 
	{  clock_t start,finish;
    start=clock();
		j++;
		Mat frame; //定义一个Mat变量,用于存储每一帧的图像
		capture>>frame; //读取当前帧
		imshow("读取视频",frame); //显示当前帧
		cout<<frame.size()<<endl;
		imwrite("1.jpg",frame);
		finish=clock();
 
    cout << finish-start  << "/" << CLOCKS_PER_SEC << " (s) "<< endl;
		waitKey(1); //延时30ms
	} 
	return 0;   
}

关键步骤解析

  1. 初始化捕获对象:使用 VideoCapture capture(0) 打开默认摄像头(索引 0)。
  2. 设置分辨率:调用 capture.set(CV_CAP_PROP_FRAME_WIDTH, 1080) 和 capture.set(CV_CAP_PROP_FRAME_HEIGHT, 720) 指定目标分辨率。这里设置为 1080x720。
  3. 循环捕获与计时:在 while 循环中,使用 clock() 记录开始时间,执行 capture >> frame 获取图像,再次调用 clock() 记录结束时间。通过 finish - start 计算耗时,并除以 CLOCKS_PER_SEC 转换为秒。
  4. 图像处理与输出:使用 imshow 实时显示画面,imwrite 将当前帧保存为 1.jpg,并通过 cout 输出帧尺寸和耗时。
  5. 界面刷新:waitKey(1) 用于处理 GUI 事件并控制帧率,参数 1 表示延时 1 毫秒(注释中提及延时 30ms,但代码参数为 1,以代码为准)。

通过调整 set 函数中的宽度和高度参数,用户可以灵活切换不同的采集分辨率,并根据实际测试的耗时数据选择最适合应用需求的配置。

以上就是 OpenCV 设置采集视频分辨率方式的详细内容,更多关于 OpenCV 视频处理与性能优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。