fourcc支持的格式 fourcc全名Four-Character Codes,四字符代码,该编码由四个字符组成 cv2.VideoWriter_fourcc('O','O','O','O') cv2 .VideoWriter_fourcc(*'OOOO') 通常写法有上述两种形式,O代表一个字符,通常有 支持avi格式的有: I420,YUV编码,视频格式为.avi PIM1,MPEG-1编码,视频格式为
为视频编解码器,20为帧播放速率,(640,480)为视频帧大小videoWriter = cv2.VideoWriter('video.avi', cv2.VideoWriter_fourcc('I' , '4', '2', '0'), 20, (640,480))#向视频文件写入一帧videoWriter.write(frame)#详解cv2.VideoWriter_fourcc对象(摘自Learning OpenCV3 Computer Vision with Python,坦白讲不太懂)#fourcc意为四字符代码(Four-Character Codes),顾名思义,该编码由四个字符组成,下面是VideoWriter_fourcc 对象一些常用的参数,注意:字符顺序不能弄混#cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi#cv2.VideoWriter_fourcc ,文件名后缀为.avi#cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv#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。 cv2.VideoWriter_fourcc(‘X’,‘V’,‘I’,‘D’)—MPEG-4编码类型,视频大小为平均值,MPEG4所需要的空间是MPEG1或M-JPEG的1/10,它对运动物体可以保证有良好的清晰度 cv2.VideoWriter_fourcc(‘T’,‘H’,‘E’,‘O’)—OGGVorbis,音频压缩格式,有损压缩,类似于MP3等的音乐格式。,兼容性差,件扩展名.ogv。 cv2.VideoWriter_fourcc(‘F’,‘L’,‘V’,‘1’)—FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。
fourcc 指定视频编解码器的 FourCC 代码,用于将视频压缩成指定格式,例如:“XVID”、“MJPG”, "mp4v"等。 可以使用 cv2.VideoWriter_fourcc() 函数来获取 FourCC 代码。 fps 指定视频帧率,即每秒显示的帧数。 frameSize 指定视频帧的大小,即视频的分辨率。 cv2.VideoWriter_fourcc() 该函数接收四个字符作为输入参数,构造要使用的编解码器的 fourcc 代码。 .VideoWriter_fourcc(‘X’,‘2’,‘6’,‘4’) MPEG-4编码 .mp4 可指定结果视频的大小 cv2.VideoWriter_fourcc(‘I’, ‘4’, ‘2’, ‘ cv2.VideoWriter_fourcc(‘T’, ‘H’, ‘E’, ‘O’) 该参数是Ogg Vorbis,文件名后缀为.ogv cv2.VideoWriter_fourcc(‘F’, ‘L’
视频录制 VideoWriter 参数1为:输出文件; 参数2为:多媒体文件格式VideoWriter_fourcc; 参数3为:帧数 参数4为:分辨率 write编写并写入缓存 release 800, 600) # 更改窗口的大小 2.调用摄像头 cap = cv2.VideoCapture(0) 3.指定输出视频的格式 # *mp4v就是解包操作 等同于 'm','p','4','v' fourcc = cv2.VideoWriter_fourcc(*'mp4v') 4.设置输出视频的属性 属性一:output.mp4——定义输出后的视频名字 属性二:fourcc——指定视频的格式(根据上一条代码的赋值 = cv2.VideoWriter_fourcc(*'mp4v') #主要是这个分辨率 #output.mp4输出后的视频名字,fourcc指定的视频格式,20:帧数,(640,480)摄像头的分辨率 vw = cv2.VideoWriter('output.mp4',fourcc,20,(640,480)) while cap.isOpened(): ret,frame = cap.read
为视频编解码器,fps为帧播放速率,size为视频帧大小 videoWiter=cv2.VideoWriter('MyOutputVid.avi',cv2.VideoWriter_fourcc('I', '4','2','0'),fps,size) #fourcc意为四字符代码(Four-Character Codes),顾名思义,该编码由四个字符组成,下面是VideoWriter_fourcc对象一些常用的参数 ,注意:字符顺序不能弄混 #cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi #cv2.VideoWriter_fourcc ('P', 'I', 'M', 'I'),该参数是MPEG-1编码类型,文件名后缀为.avi #cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4 编码类型,文件名后缀为.avi #cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv #cv2.VideoWriter_fourcc
CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = cap.get(cv2.CAP_PROP_FPS) fourcc = int(cv2.VideoWriter_fourcc(*'MJPG')) out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height 除了fourcc,其它几项都很好理解。 FourCC是一个4字节码,用来表示视频编码器,网站 fourcc.org 列出了所有可用的编码器。 = int(cv2.VideoWriter_fourcc(*'H264')) out = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height 接下来去站点 https://github.com/cisco/openh264/releases 下载1.8.0版本的dll文件,并和源码文件放在同一级目录,然后将fourcc也改为avc1,执行代码
尽管这两个方法都有类名和类四字符码(fourcc)的版本, 显然它们比直接使用RTTI对象要慢: if (obj->IsInstanceOf(“MyNamespace::MyClass”)) … if (obj->IsInstanceOf(FourCC(‘MYCL’))… if (obj->IsA(“MyNamespace::MyClass”))… if (obj->IsA(FourCC(‘MYCL 通过类名或FourCC标识符创建对象 你可以用Core::Factory 单件以类名和FourCC标识符创建从RefCounted派生的对象: Ptr<MyClass> obj = (MyClass*) 当编写一个新类时, 可能会发生FourCC已经被占用的情况. 这时, 启动程序时会弹出一个这样的错误对话框: 修正冲突的办法是改变其中的一个FourCC代码并重新编译. 例如一个对象只通过类名(或FourCC)进行创建并且只通过虚函数进行访问. 这种条件下, 链接器会完全地抛弃这个类的.obj单元, 因为外部没有调用到这个对象单元.
int fourcc:视频编码。也就是决定了后续给视频文件中添加帧的时候的编码方式。需要通过VideoWriter.fourcc()方式来创建。下面有介绍fourcc的相关知识。 2.2 fourcc 参数 在上面的传参中,比较不好理解的可能就是fourcc值了。这个值和定义不是openCV中专有的。 常见的编码格式有: VideoWriter.fourcc('P','I','M','1'); //mpeg-1编码 VideoWriter.fourcc('M', 'J', 'P', 'G'); //mjpge编码 VideoWriter.fourcc('F', 'F', 'V', '1'); // FFmpge的 无损编码格式 VideoWriter.fourcc('H', 'F', 'Y ('I', '2', '6', '3'); //H263I 编码 VideoWriter.fourcc('F', 'L', 'V', '1'); //FLV1 编码 VideoWriter.fourcc
还可用open函数来初始化一个写入视频对象: bool open(const String& filename, int fourcc, double fps,Size frameSize, bool 这个博客解释了相关的问题,比较下来,CV_FOURCC('M', 'P', '4', '2') 这个方式是最小的,但是我改成这个写入就不能成功了,可能是机器本身没有这种编码器。 其他的几种编码方式如下: CV_FOURCC('P','I','M','1') = MPEG-1 codec CV_FOURCC('M','J','P','G') = motion-jpeg codec CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec CV_FOURCC ('D', 'I', 'V', 'X') = MPEG-4 codec CV_FOURCC('U', '2', '6', '3') = H263 codec CV_FOURCC('I', '2', '6
import cv2 import time tlast = 10 # 录制的时长,单位秒 p = ImageGrab.grab() # 获得当前屏幕 a, b = p.size # 获得当前屏幕的大小 fourcc = cv2.VideoWriter_fourcc(*'XVID') # 编码格式 video = cv2.VideoWriter('test.mp4', fourcc, 16, (a, b)) # '%Y-%m-%d %H-%M-%S') # 当前的时间 p = ImageGrab.grab() # 获得当前屏幕 a, b = p.size # 获得当前屏幕的大小 fourcc = cv2.VideoWriter_fourcc(*'XVID') # 编码格式 video = cv2.VideoWriter('%s.avi' % name, fourcc, 16, (
然后我们应该指定 FourCC 代码(详见下一段)。然后传递帧率的数量和帧大小。最后一个是颜色标志。如果为 True,编码器期望颜色帧,否则它与灰度帧一起工作。 FourCC:http://en.wikipedia.org/wiki/FourCC 是用于指定视频编解码器的4字节代码。 可用代码列表可在fourcc.org中:http://www.fourcc.org/codecs.php 找到。它取决于平台。遵循编解码器对我来说效果很好。 FourCC代码作为MJPG的cv.VideoWriter_fourcc('M','J','P','G')or cv.VideoWriter_fourcc(*'MJPG')传递。 import numpy as np import cv2 as cv cap = cv.VideoCapture(0) # 定义编解码器并创建VideoWriter对象 fourcc = cv.VideoWriter_fourcc
其中,VideoWriter_fourcc类用于定义视频文件的写入格式,其参数有多种格式可选。 VideoWriter_fourcc('I','4','2','0'):该选项为一个未压缩的YUV颜色编码类型,是4:2:0色度子采样。 VideoWriter_fourcc('P','I','M','1'):该选项为MPEG-1编码类型,文件扩展名为“.mpeg”。 VideoWriter_fourcc('T','H','E','O'):该选项为Ogg Vorbis编码类型,文件扩展名为“.ogv”。 VideoWriter_fourcc('F','L','V','I'):该选项为Flash编码类型,文件扩展名为“.flv”。
表2-7 视频编码格式 OpenCV 4.1版本标志 OpenCV 4.0版本标志 作用 VideoWriter::fourcc('D','I','V','X') CV_FOURCC('D','I',' V','X') MPEG-4编码 VideoWriter::fourcc('P','I','M','1') CV_FOURCC('P','I','M','1') MPEG-1编码 VideoWriter ::fourcc('M','J','P','G') CV_FOURCC('M','J','P','G') JPEG编码(运行效果一般) VideoWriter::fourcc('M', 'P', '4' , '2') CV_FOURCC('M', 'P', '4', '2') MPEG-4.2编码 VideoWriter::fourcc('D', 'I', 'V', '3') CV_FOURCC('D' 编码 VideoWriter::fourcc('I', '2', '6', '3') CV_FOURCC('I', '2', '6', '3') H263I编码 VideoWriter::fourcc(
input_path) frame_size = (cap.get(cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # fourcc = int(cap.get(cv2.CAP_PROP_FOURCC)) # fourcc = cv2.VideoWriter_fourcc(*'XVID') fourcc = cv2.VideoWriter_fourcc (*'mp4v') fps = cap.get(cv2.CAP_PROP_FPS) out = cv2.VideoWriter(output_path, fourcc, fps, (int(
VideoWriter的对象的创建有两种方式: 第一种是使用构造函数的形式: cv::VideoWriter out( const string& filename, // 输入文件名 int fourcc , // 编码形式,使用 CV_FOURCC()宏 double fps, // 输出视频帧率 cv::Size frame_size, // 单帧图片的大小 bool 可以获取的编码格式 CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 code CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codec CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec CV_FOURCC ('D', 'I', 'V', 'X') = MPEG-4 codec CV_FOURCC('U', '2', '6', '3') = H263 codec CV_FOURCC('I', '2',
break print(count) 其中time_interval一般取1 2 帧合成视频 def Composite_video(im_list,video_dir,fps = 30): # fourcc = cv2.cv.CV_FOURCC('M','J','P','G') #opencv版本是2 fourcc = cv2.VideoWriter_fourcc(*'XVID') #opencv img_size = img.size #获得图片分辨率,im_dir文件夹下的图片分辨率需要一致 videoWriter = cv2.VideoWriter(video_dir, fourcc
VideoWriter(filename, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object> 第一个参数是要保存的文件的路径 fourcc 指定编码器 fps 要保存的视频的帧率 frameSize 要保存的文件的画面尺寸 isColor 指示是黑白画面还是彩色的画面 fourcc fourcc 本身是一个 32 位的无符号数值,用 4 如果 fourcc 采用 -1,系统可能会弹出一个对话框让你进行选择,但是我没有试验成功过。 ? 代码示例 import numpy as np import cv2 cap = cv2.VideoCapture(0) fourcc = cv2.VideoWriter_fourcc(*'XVID ') out = cv2.VideoWriter('testwrite.avi',fourcc, 20.0, (1920,1080),True) while(cap.isOpened()):
('X','V','I','D'),fps,(width,height)) ''' 文件扩展名.avi: cv2.VideoWriter_fourcc('I','4','2','0')---未压缩的 cv2.VideoWriter_fourcc('P','I','M','1')---MPEG-1编码类型。 cv2.VideoWriter_fourcc('X','V','I','D')---MPEG-4编码类型,视频大小为平均值,MPEG4所需要的空间是MPEG1或M-JPEG的1/10,它对运动物体可以保证有良好的清晰度 文件扩展名.ogv: cv2.VideoWriter_fourcc('T','H','E','O')---OGGVorbis,音频压缩格式,有损压缩,类似于MP3等的音乐格式,兼容性差。 文件扩展名.flv: cv2.VideoWriter_fourcc('F','L','V','1')---FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。
destroyAllWindows() 保存视频到文件 import numpy as np import cv2 cap = cv2.VideoCapture(0) #定义视频编码器 #这里有必要提一下fourcc #FourCC全称Four-Character Codes,代表四字符代码 (four character code), 它是一个32位的标示符,其实就是typedef unsigned int FOURCC #因此cv2.VideoWriter_fourcc()函数的作用是输入四个字符代码即可得到对应的视频编码器。 #FourCC 码以下面的格式传给程序,以 MJPG 为例: #cv2.cv.FOURCC('M','J','P','G') 或者 cv2.cv.FOURCC(*'MJPG')。 fourcc = cv2.VideoWriter_fourcc(*'XVID')#使用XVID编码器 out = cv2.VideoWriter('output.avi',fourcc, 20.0, (