下面是使用OpenCV 3.4.0实现视频中的帧保存为图片的步骤和示例:
步骤
- 导入OpenCV库
使用Python可以通过以下命令导入OpenCV库
python
import cv2
- 读取视频文件
使用cv2.VideoCapture()函数读取视频文件。如下所示:
python
video = cv2.VideoCapture('test.mp4')
其中'test.mp4'是要读取的视频文件的路径,可以根据实际情况修改。
- 设置帧计数器并循环读取
使用while循环对视频逐帧进行读取,利用cv2.imwrite()函数将读取到的帧保存为图片。具体代码如下:
python
count = 0 # 帧计数器
success = True
while success:
success, frame = video.read()
if success:
cv2.imwrite("frame%d.jpg" % count, frame)
count += 1
在循环中,先使用video.read()函数将视频逐帧读取到frame中,同时success变量指示是否读取成功。如果读取成功,则使用cv2.imwrite()函数将当前帧保存为图片,图片的文件名为“frame”加上帧计数器count,后缀名为.jpg。
注:当我们不需要每一帧都保存为图片时,我们可以通过控制读取视频的帧数实现每隔一定的帧保存一张图片。
- 释放资源
最后,一定要记得释放资源,避免视频占用过多的系统资源。具体代码如下:
python
video.release()
示例
下面给出两个示例:
示例一:读取本地摄像头并保存为图片
import cv2
vc = cv2.VideoCapture(0)
num = 0
while True:
ret, frame = vc.read()
if ret:
cv2.imshow('my camera', frame)
k = cv2.waitKey(1)
if k == ord('s'): # 按下's'键进行保存
cv2.imwrite('%d.jpg' % num, frame)
num += 1
elif k == ord('q'): # 按下'q'键退出
break
else:
break
vc.release()
cv2.destroyAllWindows()
这个示例中,我们通过cv.VideoCapture(0)读取系统的默认摄像头,然后通过按下's'键保存当前帧为图片,按下'q'键退出。保存的图片命名方式为数字序列。
示例二:读取本地视频文件并保存每隔一定时间的帧为图片
import cv2
video = cv2.VideoCapture('test.mp4')
fps = video.get(cv2.CAP_PROP_FPS) # 获取视频帧率
interval = 2 * fps # 每隔两秒保存一张图片
count = 0
success = True
while success:
success, frame = video.read()
if success:
if count % interval == 0: # 每隔interval帧保存一张图片
cv2.imwrite("frame%d.jpg" % count, frame)
count += 1
video.release()
这个示例中,我们通过cv.VideoCapture()函数读取本地视频文件'test.mp4',并获取视频的帧率fps。然后每隔两秒保存一张图片,即每隔interval帧保存一张图片,然后释放资源。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Opencv3.4.0实现视频中的帧保存为图片功能 - Python技术站