读写视频时的文件格式名
首先明确一点,无论是对于图片还是视频,其文件名后缀仅仅是为了方便操作系统关联打开文件的应用程序,程序解码图片与视频的方式与文件名后缀无关。他们所使用的编码是在文件内部声明的,应用程序打开他们的时候会读取其声明,然后再采取相应的解码方式去解码播放或者显示。比如某图片本身格式是.png,被错误改成了.jpg甚至是丢失,只要文件本身没有损坏,图片查看器依旧会按.png去解码。
OpenCV也是一个原理,使用imread()或VideoCapture类去加载图片或视频时,文件格式名无关紧要,只要文件本身格式是OpenCV所支持的,就可以正确加载。
另一方面,使用imwrite()或VideoWriter类去生成图片或视频时,必须指定其格式后缀名,因为这将决定OpenCV使用哪种编码方式去保存。
顺便提一句,生成视频的时候,其格式名要与其解编码器兼容,如使用.avi格式时,要使用VideoWriter::fourcc('M','J','P','G')解编码器(即Motion JPEG)或VideoWriter::fourcc('H','2','6','4')解编码器(即H.264)等;若使用.mp4格式却使用Motion JPEG等不兼容的解编码器,则会导致生成的视频不可用。
OpenCV获取原视频的编码方式、帧率、宽高
#include<iostream>
#include <opencv2/opencv.hpp>
using n