视频处理


视频截取图片

  1. 创建一个VideoCapture对象,从摄像头读取视频
  2. 一般来说,该函数每25毫秒读取一帧,也就是说,视频合适帧数在40帧。
import numpy as np
import cv2cap = cv2.VideoCapture(0)
#从0开始是第一个摄像头,依次向后增加
#讲数字改为视频的地址即可读取视频while(True):# Capture frame-by-frameret, frame = cap.read()#返回一个bool值ret,如果正确读取帧,则它将为True# Our operations on the frame come heregray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# Display the resulting framecv2.imshow('frame',gray)if cv2.waitKey(1) & 0xFF == ord('q'):break#When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
注意:

有时候摄像头无法正常启动,可以**cap.isOpened()方法检查它是否已初始化。如果是没问题,那好的。否则使用cap.open()**打开它


** cap.get(propId)**方法访问此视频的某些功能,其中propId是0到18之间的数字。每个数字表示视频的属性(如果它适用于该视频)
CV_CAP_PROP_POS_MSEC视频文件的当前位置(以毫秒为单位)或视频捕获时间戳。
CV_CAP_PROP_POS_FRAMES接下来要解码/捕获的帧的基于0的索引。
CV_CAP_PROP_POS_AVI_RATIO视频文件的相对位置:0 - 电影的开始,1 - 电影的结尾。
CV_CAP_PROP_FRAME_WIDTH视频流中帧的宽度。
CV_CAP_PROP_FRAME_HEIGHT视频流中帧的高度。
CV_CAP_PROP_FPS帧速率。
CV_CAP_PROP_FOURCC编解码器的4字符代码。
CV_CAP_PROP_FRAME_COUNT视频文件中的帧数。
CV_CAP_PROP_FORMAT返回的Mat对象的格式retrieve()。
CV_CAP_PROP_MODE指示当前捕获模式的特定于后端的值。
CV_CAP_PROP_BRIGHTNESS图像的亮度(仅适用于相机)。
CV_CAP_PROP_CONTRAST图像对比度(仅适用于相机)。
CV_CAP_PROP_SATURATION图像的饱和度(仅适用于相机)。
CV_CAP_PROP_HUE图像的色调(仅适用于相机)。
CV_CAP_PROP_GAIN图像的增益(仅适用于相机)。
CV_CAP_PROP_EXPOSURE曝光(仅适用于相机)。
CV_CAP_PROP_CONVERT_RGB布尔标志,指示是否应将图像转换为RGB。
CV_CAP_PROP_WHITE_BALANCE_U白平衡设置的U值(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_WHITE_BALANCE_V白平衡设置的V值(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_RECTIFICATION立体摄像机的整流标志(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_ISO_SPEED摄像机的ISO速度(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_BUFFERSIZE存储在内部缓冲存储器中的帧数(注意:目前仅支持DC1394 v 2.x后端)
cap.set(propId , value) 修改视频,其中,propld是0到18的数字,用来选择视频属性,value代表修改值。
CV_CAP_PROP_POS_MSEC视频文件的当前位置(以毫秒为单位)。
CV_CAP_PROP_POS_FRAMES接下来要解码/捕获的帧的基于0的索引。
CV_CAP_PROP_POS_AVI_RATIO视频文件的相对位置:0 - 电影的开始,1 - 电影的结尾。
CV_CAP_PROP_FRAME_WIDTH视频流中帧的宽度。
CV_CAP_PROP_FRAME_HEIGHT视频流中帧的高度。
CV_CAP_PROP_FPS帧速率。
CV_CAP_PROP_FOURCC编解码器的4字符代码。
CV_CAP_PROP_FRAME_COUNT视频文件中的帧数。
CV_CAP_PROP_FORMAT返回的Mat对象的格式retrieve()。
CV_CAP_PROP_MODE指示当前捕获模式的特定于后端的值。
CV_CAP_PROP_BRIGHTNESS图像的亮度(仅适用于相机)。
CV_CAP_PROP_CONTRAST图像对比度(仅适用于相机)。
CV_CAP_PROP_SATURATION图像的饱和度(仅适用于相机)。
CV_CAP_PROP_HUE图像的色调(仅适用于相机)。
CV_CAP_PROP_GAIN图像的增益(仅适用于相机)。
CV_CAP_PROP_EXPOSURE曝光(仅适用于相机)。
CV_CAP_PROP_CONVERT_RGB布尔标志,指示是否应将图像转换为RGB。
CV_CAP_PROP_WHITE_BALANCE_U白平衡设置的U值(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_WHITE_BALANCE_V白平衡设置的V值(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_RECTIFICATION立体摄像机的整流标志(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_ISO_SPEED摄像机的ISO速度(注意:目前仅支持DC1394 v 2.x后端)
CV_CAP_PROP_BUFFERSIZE存储在内部缓冲存储器中的帧数(注意:目前仅支持DC1394 v 2.x后端)

视频保存

我们捕获视频,并逐帧处理,照片使用cv2.imwrite(),视频使用类似读取视频的方法。

  1. 创建一个VideoWriter对象,制定输出的文件名
  2. 指定FourCC代码,传递每秒帧数和帧大小
  3. 设定isColor标志,True为编码器需要彩色帧,否则需要灰度帧

FourCC是一个(占)四字节代码,用于指定视频编解码器,可在fourcc.org中查看代码详情,它取决于不同的平台

FourCC简介:

FOURCC是“四字符代码”的缩写 - “四字符代码” - 媒体文件中使用的视频编解码器,压缩格式,颜色或像素格式的标识符,占四字节,32位。FOURCC的另一种方法是4CC。

一些比较知名的FOURCC包括“AVI”,“DIVX”,“XVID”,“H264”,“DX50”

建议:
1. 在Fedora中:DIVX,XVID,MJPG,X264,WMV1,WMV2(XVID更为可取.MJPG会产生高大小的视频.X264可以提供非常小的视频)
2.在Windows中:DIVX(更多要测试和添加)

FourCC代码作为MJPG 传递

cv2.VideoWriter_fourcc('M','J','P','G')

或传递

cv2.VideoWriter_fourcc(*'MJPG')给MJPG

案例
import numpy as np
import cv2cap = cv2.VideoCapture(0)# Define the codec and create VideoWriter object
#设定 4CC格式,即视频解码器
fourcc = cv2.VideoWriter_fourcc(*'XVID')
#传入保存的路径、4CC、帧率、帧的大小
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))while(cap.isOpened()):ret, frame = cap.read()if ret==True:frame = cv2.flip(frame,0)#翻转图片函数,垂直翻转# write the flipped frameout.write(frame)cv2.imshow('frame',frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:break# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

OpenCV学习笔记_2_视频读取和保存相关推荐

  1. OpenCV学习笔记:视频处理

    环境:CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) $ pkg-config --modversion opencv 2.4.13 测试所用视 ...

  2. Opencv学习笔记(五)连续保存多张图片(用于标定等)

    在做图像标定的时候有一件事情很烦,就是我需要连续拍多张图片,我们当然可以通过软件直接截取,但是原谅作为小白的我当时并没有找到这个软件(坑爹啊,后来别人给我了). 于是就只能找找能不能通过程序去保存的. ...

  3. opencv学习笔记1:图片读入,显示与保存(有代码)

    读入图像 cv2.imread(filepath,flags) 说明: filepath文件名 图片路径. 如原始路径为: D:\lesson\2345_image_file_copy_15.jpg ...

  4. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  5. Opencv学习笔记(三) -- 图像压缩与保存

    1.图像压缩 1.1常用图像格式 bmp Windows位图格式.该格式为不压缩格式,缺点是图像文件较大. jpg JPEG是为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用的.应用最 ...

  6. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

  7. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  8. 某人写的openCV学习笔记

    原文地址:某人写的openCV学习笔记作者:拔剑 http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之 ...

  9. 某人写的openCV学习笔记_拔剑-浆糊的传说_新浪博客

    http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之前看到过C版本的,感觉写的很长,没有仔细看,但是C ...

最新文章

  1. 判断一个数为多少位 比如 3 是 1位 102 是3位。
  2. JQUERY使用技巧~总结
  3. webpack2+React 实例demo
  4. 简单的多显示器解决方案
  5. 图解 React-router 源码
  6. uniapp 中 下拉刷新和上拉加载 需要手动在page.json中开启
  7. 【IDEA】IDEA 单元测试 System.in 没办法输入
  8. vmware:Cannot open the disk 'XXX' or one of the snapshot disks it depends on.
  9. 《深入理解Java虚拟机:JVM高级特性与最佳实践》 (第3版)周志明 著
  10. C语言编程齿轮轮廓线坐标,C语言程序实现齿轮基本参数几何尺寸计算
  11. 软考高项笔记 | 大数据
  12. leetcode 718 最长公共子串
  13. 全球与中国注塑磁体市场竞争策略分析及投资前景研究报告2021-2027年版
  14. OceanBase社区版4.0,给了我很多惊喜
  15. linux文件误删恢复debugfs和extundelete
  16. 【2019年01月18日】股息率分红最高排名
  17. DOM2和DOM3——JavaScript高级程序设计第三版第12章知识总结
  18. 如何使用EasyNVR+CDN突破萤石云在直播客户端数量上的限制,做到低成本高性价比的直播...
  19. Linux 文件系统(目录介绍)
  20. 《Java并发编程的艺术》——Java并发的前置知识(笔记)

热门文章

  1. SOLIDWORKS包覆功能怎么用?SW曲面包覆实例教程!
  2. CTFHub闯关之SQL注入
  3. pythonturtle填充颜色函数_python turtle库颜色填充-绘制心形
  4. HashMap源码深度解析【重点】
  5. maya贴图路径重新设定
  6. 2018年计算机应用基础离线作业,东北师范大学2018年春《计算机应用基础》离线作业答案...
  7. 前端demo——CSS3制作简易时钟
  8. RocketMQ报错sendDefaultImpl call timeout的解决办法
  9. php scandir遍历,PHP scandir递归
  10. Prompt Engineering 写作准则与应用示例集