OpenCV 按一定间隔截取摄像头视频帧

本文介绍如何使用OpenCV库在Python环境中按指定间隔从视频文件中截取帧并保存为图片。OpenCV是一个开源计算机视觉库,提供了丰富的图像处理和计算机视觉算法。

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

前言

关于opencv

OpenCV 是 Intel 开源计算机视觉库 (Computer Version) 。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV 拥有包括 300 多个 C 函数的跨平台的中、高层 API 。它不依赖于其它的外部库 —— 尽管也可以使用某些外部库。 OpenCV 对非商业应用和商业应用都是免费 的。同时 OpenCV 提供了对硬件的访问,可以直接访问摄像头,并且 opencv 还提供了一个简单的 GUI(graphics user interface) 系统 :highgui 。 

opencv的python包装

OpenCV 本身是有 C/C++ 编写的,如果要在其他语言中使用,我们可以通过对其动态链接库文件进行包装即可,幸运的是, Python 下有很多个这样的包装,本文中使用的是 Cvtypes 。

事实上,在 Python 中很多的包都是来自第三方的,比如 PIL(Python Image Library) 即为 C 语言实现的一个图形处理包,被包装到了 Python 中,这些包装可以让你像使用 Python 的内建函数一样的使用这些 API 。

这个例子使用python编程:用opencv按一定间隔截取视频帧,并保存为图片。

import cv2
 
       
vc = cv2.VideoCapture('Test.avi') #读入视频文件
c=1
 
if vc.isOpened(): #判断是否正常打开
    rval , frame = vc.read()
else:
    rval = False
 
timeF = 1000  #视频帧计数间隔频率
 
while rval:   #循环读取视频帧
    rval, frame = vc.read()
    if(c%timeF == 0): #每隔timeF帧进行存储操作
        cv2.imwrite('image/'+str(c) + '.jpg',frame) #存储为图像
    c = c + 1
    cv2.waitKey(1)
vc.release()
 

### 使用 OpenCV 进行视频到图片的截取 #### 创建视频捕获对象并初始化参数 为了从视频中提图像,首先需要创建一个 `VideoCapture` 对象来打开视频文件,并获一些基本属性。 ```python import cv2 video_filepath = 'path_to_video.mp4' cap = cv2.VideoCapture(video_filepath) fps = int(cap.get(cv2.CAP_PROP_FPS)) total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) height, width = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)), int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) print(f'FPS: {fps}, Total Frames: {total_frames}, Resolution: {width}x{height}') ``` #### 循环读一帧并将特定帧保存为图片 通过循环遍历整个视频流,可以逐帧处理视频数据。对于想要保存的帧,调用 `imwrite()` 方法将其写入磁盘作为单独的图像文件。 ```python frame_interval = 10 # 设置每隔多少帧抽一次 output_folder = './frames/' if not os.path.exists(output_folder): os.makedirs(output_folder) current_frame = 0 while True: ret, frame = cap.read() if not ret: break if current_frame % frame_interval == 0: output_path = f'{output_folder}/frame_{current_frame}.jpg' cv2.imwrite(output_path, frame) print(f'Saved {output_path}') current_frame += 1 cap.release() # 关闭视频文件或摄像头设备 cv2.destroyAllWindows() ``` 上述代码展示了如何利用 Python 和 OpenCV 库完成从指定路径加载视频、设置间隔抽帧以及将选定帧另存为 JPEG 文件的过程[^1]。 #### 提人脸特写的注意事项 如果目标是从视频中专门抓含有人脸的部分,则还需要额外引入人脸识别模型来进行检测定位工作。通常情况下会涉及到 Haar 特征分类器或其他更先进的深度学习预训练模型如 DNN 或者 MTCNN 等技术[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值