将图像转换成.avi视频(opencv实现)
背景:
传统的目标检测(如canny边缘检测)不一定在每个不同的场景下都能正确的检测出各个类别的目标物体,所以这里先人工进行场景分类,然后针对每个场景设计一种传统目标检测的方法。
由于要人工的进行场景分类,所以把每个场景的图像都分别放在一个文件夹里,然后分别将每个文件夹里的图像都生成一个场景的视频就可以了,后续只要针对不同的场景视频设计传统目标检测的方法即可。
将文件夹里的图像转换成.avi视频实现:
import os import cv2 import numpy as np path = r'C:\Users\13486\Desktop\biye_photo/' filelist = os.listdir(path) fps = 1 #视频每秒1帧 size = (2880, 2880) #需要转为视频的图片的尺寸 #视频保存在当前目录下 video = cv2.VideoWriter(r"C:\Users\13486\Desktop\photo.avi", cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size) for item in filelist: # 找到路径中所有后缀名为.JPEG的文件,可以更换为其它图像格式 if item.endswith('.JPEG'): item = path + item img = cv2.imread(item) img = cv2.resize(img, (2880, 2880))#如果原始图片的尺寸不一样 video.write(img) video.release() cv2.destroyAllWindows()
注意:
(1)使用cv2.VideoWriter_fourcc('I', '4', '2', '0')编码参数,同一个文件夹里图像的大小必须是一样的,可以通过resize实现;
(2)cv2.VideoWriter_fourcc()是编码类型参数:
cv2.VideoWriter_fourcc('I','4','2','0')---未压缩的YUV颜色编码,4:2:0色度子采样。兼容性好,但文件较大。文件扩展名.avi;
cv2.VideoWriter_fourcc('P','I','M','1')---MPEG-1编码类型,文件扩展名.avi。随机访问,灵活的帧率、可变的图像尺寸、定义了I-帧、P-帧和B-帧 、运动补偿可跨越多个帧 、半像素精度的运动向量 、量化矩阵、GOF结构 、slice结构 、技术细节、输入视频格式;
cv2.VideoWriter_fourcc('X','V','I','D')---MPEG-4编码类型,视频大小为平均值,MPEG4所需要的空间是MPEG1或M-JPEG的1/10,它对运动物体可以保证有良好的清晰度,间/时间/画质具有可调性。文件扩展名.avi;
cv2.VideoWriter_fourcc('T','H','E','O')---OGGVorbis,音频压缩格式,有损压缩,类似于MP3等的音乐格式。,兼容性差,件扩展名.ogv;
cv2.VideoWriter_fourcc('F','L','V','1')---FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。文件扩展名为.flv
本文地址:https://blog.csdn.net/jancis/article/details/107246992