赞
踩
- # coding:utf-8
-
- import os
- import cv2
-
- # 视频存放路径
- source_video_path = os.getcwd() + '/v.mp4'
- # 图片存放路径
- save_base_path = os.getcwd() + '/pic'
- # 视频转换为图片的存放路径
- save_pics_path = save_base_path + '/cache_pic'
-
- # 确保存储图片的文件夹存在
- if not os.path.exists(save_pics_path):
- os.makedirs(save_pics_path)
-
- # 将视频转换为图片并进行计数,返回总共生成了多少张图片
- def video_to_pics(video_cap):
- num = 0
- # 逐帧读取视频
- while True:
- ret, frame = video_cap.read()
- # 检查是否成功读取了帧
- if not ret:
- break
- # 构造图片的保存路径
- save_path = os.path.join(save_pics_path, f'frame{num}.jpg')
- # 保存图片
- cv2.imwrite(save_path, frame)
- num += 1
- return num
-
- if __name__ == '__main__':
- video_cap = cv2.VideoCapture(source_video_path)
- print('读取完毕')
- print('开始将视频转换为图片')
- number = video_to_pics(video_cap)
- print('转换图片数目=', number)
- print('转换完毕')
- video_cap.release()
本关任务:认识并掌握 cv2 的用法。完成任务:使用 cv2
把视频转换成图片(视频路径已给定)。
为了完成本关任务,你需要掌握:
函数 cv2.imread(filepath,flags)
读入一副图片:
filepath:要读入图片的完整路径;
flags:读入图片的标志:
cv2.IMREAD_COLOR
:默认参数,读入一副彩色图片,忽略 alpha 通道;cv2.IMREAD_GRAYSCALE
:读入灰度图片;cv2.IMREAD_UNCHANGED
:读入完整图片,包括 alpha 通道。函数 cv2.imshow(wname,img)
显示图像:
wname:显示图像的窗口的名字;
img:要显示的图像(imread
读入的图像),窗口大小自动调整为图片大小。
函数 cv2.imwrite(file,img,num)
保存一个图像:
注意:
cv2.IMWRITE_JPEG_QUALITY
类型为long
,必须转换成int
;cv2.IMWRITE_PNG_COMPRESSION
, 从 0 到 9 压缩级别越高图像越小。
视频中最常用的就是从视频设备采集图片或者视频,或者读取视频文件并从中采样。所以比较重要的也是两个模块,一个是 VideoCapture
,用于获取相机设备并捕获图像和视频,或是从文件中捕获。还有一个 VideoWriter
,用于生成视频。
函数 cap.read() (cap=cv2.VideoCapture())
按帧读取视频,ret,frame 是获 cap.read()
方法的两个返回值。
ret 是布尔值,如果读取帧是正确的则返回 True,如果文件读取到结尾,它的返回值就为 False;
frame 就是每一帧的图像,是个三维矩阵。
根据提示,在右侧编辑器 Begin - End 之间补充代码。
测试步骤说明:
先在代码文件中补充代码;
自行测试后点击评测按钮对比结果,系统会判定是否通关;
测试通过可在图形化界面的目录 workspace/myshixin/pic/cache_pic 中看到转换成功的图片。
开始你的任务吧,祝你成功!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。