opencv
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。
OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。
OpenCV 是跨平台的,可以在 Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。
OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。
OpenCV 还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。
video 标签
标签定义视频,比如电影片段或其他视频流。
目前, 元素支持三种视频格式:MP4、WebM、Ogg。
HTML5 Video标签支持的视频编解码器格式因浏览器而异,不同的浏览器支持的视频编解码器也不同,主要取决于浏览器是否支持相应的视频解码器。以下是一些常见的视频编解码器格式及其浏览器支持情况:
- H.264/AVC:绝大多数浏览器都支持,包括Chrome、Firefox、Safari、Edge、IE9及以上版本等。
- VP9:Chrome、Firefox、Safari支持VP9编解码器,Edge从版本18开始支持,IE不支持。
- WebM/VP8:Chrome、Firefox、Safari支持,Edge、IE不支持。
- Ogg/Theora:Firefox、Chrome、Safari支持,Edge、IE不支持。
- MPEG-4:Safari支持,其他浏览器需要安装相应的解码器才能支持。
需要注意的是,虽然某个浏览器支持某个视频编解码器,但它并不一定支持该编解码器的所有特性。因此在实际使用中,需要根据实际需求和浏览器支持情况选择合适的视频编解码器。
解决方法
原因:在用opencv生成视频时使用了video标签不支持的视频编解码格式。
解决方法:在调用cv2.VideoWriter_fourcc()方法时设置video支持的视频编解码格式。
cv2.VideoWriter_fourcc("I", "Y", "U", "V")`:该参数是YUV编码类型,文件名后缀为.avi。
cv2.VideoWriter_fourcc("I", "4", "2", "0")`:该参数是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("F", "L", "V", "1")`:该参数是FLash视频编码类型,文件名后缀为.flv。
补充
视频编码和视频文件后缀是什么关系?
视频编码和视频文件后缀的关系是通过视频容器来实现的。一个视频文件包含一个视频流和一个音频流(如果有音频)。视频流和音频流都有自己的编码方式。视频容器是一种将视频流和音频流打包在一起的格式。视频容器格式通常定义了视频流、音频流、字幕、元数据以及其他信息的存储方式。
不同的视频容器支持不同的编码方式。比如,MP4文件通常使用H.264编码视频流和AAC编码音频流,而WebM文件通常使用VP8或VP9编码视频流和Vorbis或Opus编码音频流。
因此,视频编码和视频文件后缀之间没有直接关系,它们是通过视频容器格式进行联系的。常见的视频文件后缀包括.mp4、.avi、.mov、.mkv、.webm等。