基本命令介绍:


  • 1 cv2.imread(filename,property) 读入图像

    • property:指定图像用哪种方式读取文件
  • 2 cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为RBG模式,要与BMP格式的图像区分开
  • 3 cv2.IMREAD_GRAYSCALE:读入灰度图像
  • 4 cv2.imshow(窗口名,图像文件) :显示图像
  • 5 cv2.waitKey() 键盘绑定函数
    • 功能:函数等待特定的几毫秒,看是否由键盘输入
  • 6 cv2.namedWindow(窗口名,属性) 创建一个窗口
    • 属性:指定窗口大小模式
  • 7 cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小
  • 8 cv2.WINDOW_NORMAL:窗口大小可调整
  • 9 cv2.destoryAllWindows(): 删除任何建立的窗口
更多介绍请参考下面实例代码:

实例代码:

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
# author:"Zhang Shuyu"
import cv2fourcc = cv2.VideoWriter_fourcc('X','V','I','D') # 使用XVID编码器,xvid为主流的通用视频编码器
camera = cv2.VideoCapture(0) # 参数0表示第一个摄像头
#fps = camera.get(cv2.CAP_PROP_FPS)# 获取视频帧率 todo:当视频流从摄像头采集时此命令无法使用
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)),int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))# 判断视频是否打开
if (camera.isOpened()):print('Open')
else:print('Fail to open!')# 测试用,查看视频size
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)),int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print ('size:'+repr(size))
out = cv2.VideoWriter('output_test_xvid-30.avi',fourcc,30,size) # 参数分别是:保存的文件名、编码器、帧率、视频宽高
count=0
while True:count+=1grabbed, frame_lwpCV = camera.read() # 逐帧采集视频流if not grabbed:breakcv2.imshow('lwpCVWindow', frame_lwpCV) # 显示采集到的视频流out.write(frame_lwpCV)key = cv2.waitKey(1) & 0xFFif key == ord('q') or count==300:#等待采集300帧图像数据或者点击键盘‘q’退出保存视频,count可以控制视频保存的时间break
out.release() #释放out,保存视频,否则程序会出现错误,保存的视频文件会提醒文件损坏
camera.release() #释放camera
cv2.destroyAllWindows()

在以上的代码中修改

fourcc = cv2.VideoWriter_fourcc('X','V','I','D') #'X','V','I','D'就是编码器的格式

可以使用PIM1MP42等不同的编码格式

更多具体的视频流编码格式可以参考https://blog.csdn.net/qq_30622831/article/details/82082122

注意:有的编码器自己是不能使用的,不然保存后得到的视频会是0Kb或者无法打开出现异常,下图中的红色部分代表采用H264编码器得到的视频出现异常。原因是我的电脑上没有相应的linopenH264.dll文件。

最后通过对不同的编码格式(也就是编码器)得到的视频进行分析,可以得到下表:(不包括output_test_h264-30.avi)

视频 编码方式 fps(帧率) size 比特率(kbps) 数据类型
output_test_free-30 无压缩类型(RGB24) 10 (640,480) 833126 uint8
output_test_mp42-30 MP42 10 (640,480) 18432 uint8
output_test_pim1-30 PIM1 10 (640,480) 18432 uint8
output_test_xvid-30 XVID 10 (640,480) 794 uint8

这些视频的时长和帧率都是相同的,拍摄的景象都是相同的,但是不同的编码方式最后得到的视频相差很多。XVID保存的视频最小,无压缩格式保存的视频最大,但视频的清晰度也是无压缩的最好。用空间换取了视频的质量。在同等条件下,比特率对视频质量以及存储大小的影响最大。


使用无压缩类型编码方式的方法:
out = cv2.VideoWriter('output_test_xvid-30.avi',-1,30,size) # 参数分别是:保存的文件名、编码器、帧率、视频宽高

将指令中的编码器对应的参数改为“-1”即可,就会出现一个对话窗口,可以手动选择编码器


其他的一些视频流的编码详细介绍请参考
- https://blog.csdn.net/baidu_39511645/article/details/78442819
- http://www.360doc.com/content/15/0215/23/14534301_448873274.shtml

Python+OpenCv--采用不同编码器保存的视频比较相关推荐

  1. python opencv按照一定间隔保存视频帧

    python opencv按照一定间隔保存视频帧 文章目录: 一.获取视频流的相关参数 二.设置间隔保存视频帧 想实现opencv读取视频帧,按照一定的时间间隔然后保存图片下来,因为所有的帧都保存下来 ...

  2. opencv把图片序列保存为视频

    opencv把图片序列保存为视频 1,简介 opencv不仅把一段视频抽成一帧一帧的图片,还可以把连续的图片保存为一段视频,可以很方便的满足我们的需求,下面介绍如何把图片序列保存为视频. 2,open ...

  3. Python+OpenCV 图像处理系列(2)—— 视频捕获、播放和保存

    1.视频捕获 为了获取视频,首先需要创建一个 VideoCapture 类对象.它的参数可以是设备的索引号,或者是一个视频文件.设备索引号就是在指定要使用的摄像头.一般的笔记本电脑都有内置摄像头.所以 ...

  4. python+opencv 实现图像人脸检测及视频中的人脸检测

    执着于理想,纯粹于当下. 文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检 ...

  5. Python OpenCV高速公路道路汽车车辆摄像头视频侦测检测识别统计数量

    Python OpenCV高速公路道路汽车车辆侦测检测识别统计数量 如需安装运行环境或远程调试,可加QQ905733049由专业技术人员远程协助! 运行结果如下: 运行主要代码如下: import c ...

  6. python+opencv+PIL,在图片和视频中写入中文(汉字)

    原博客地址:https://blog.csdn.net/wyx100/article/details/80412101 效果 代码 #!/usr/bin/env python # -*- coding ...

  7. 使用Python+OpenCV将连续图片生成avi视频

    import cv2 import osim_dir = '...' # 图片存储路径 video_dir = '.../a.avi' # 视频存储路径及视频名 fps = 30 # 帧率一般选择20 ...

  8. python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹

    参考文章1:opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作 参考文章2:python-OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用 ...

  9. python opencv 保存摄像头视频,以及fourc编码的介绍

    之所以写这篇博客,主要还是想介绍一下fourcc编码 1 读取摄像头 1.1 正常读取一个摄像头 1.读取摄像头 只读取摄像头 没有做其他操作 import cv2# 获取摄像头 0代表摄像头索引 c ...

最新文章

  1. 烂泥:nginx同时支持asp.net与php
  2. 15个最热门的GitHub库
  3. QT的QMaterial类的使用
  4. 03_ClickHouse数据格式,TabSeparated、TSKV、CSV格式、JSON格式、Parquet、ORC、其它数据格式(Native,Pretty,Values,Vertical等)
  5. Less Css 教程
  6. mysql强制禁止使用索引_MYSQL强制使用索引和禁止使用索引
  7. www.python123.org_python爬虫-requests
  8. 赛锐信息:优化SAP系统运行时的建议
  9. LDA通俗理解LDA主题模型
  10. Linux命令解释之mkfs.ext3
  11. 重磅!清华大学网上课程面向全国免费开放!无需登录、注册!在家上清华!...
  12. vsftp配置问题启示录
  13. YARN 工作流程详解
  14. [Objective-C]第一天
  15. 基于SSM+Shiro+Redis+Layui的后台管理系统
  16. 高精度定位系统精细测距定位
  17. glusterfs架构和原理
  18. 【开源】23个优秀的机器学习数据集,推荐!
  19. golang监控服务器性能,go 性能监控神器
  20. 桌面搜索项目正式启动

热门文章

  1. 100 个网络基础知识普及,看完成半个网络高手!(文末附PDF版本)
  2. 悲剧!中小企业惨痛的外训经历!
  3. text-shadow、box-shadow
  4. 【开源访谈】Kingshard 作者陈非访谈实录【项目简介】 Kingshard 是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQ
  5. mysql远程连接命令
  6. C++ vector构造函数
  7. [转]Nginx基本功能极速入门
  8. 北京慧点科技有限公司java开发实习生面试过程
  9. SAM解析:Sharpness-Aware Minimization for Efficiently Improving Generalization
  10. AutoCAD的命令脚本scr入门