OpenCV学习笔记(2)——如何用OpenCV处理视频
如何用OpenCV处理视频
- 读取视频文件,显示视频,保存视频文件
- 从摄像头获取并显示视频
1.用摄像头捕获视频
为了获取视频,需要创建一个VideoCapature对象。其参数可以是设备的索引号,也可以是一个视频文件。设备索引号一般笔记本自带的摄像头是0。之后就可以一帧一帧的捕获视频,但是一定要记得停止捕获视频
# -*- coding:utf-8 -*-
import numpy as np
import cv2
cap = cv2.VideoCapture(0)#cap仅仅是摄像头的一个对象
while True:
ret,frame = cap.read()#一帧一帧的捕获视频,ret返回的是否读取成功,frame返回的是帧
# gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#对帧的操作,这里是把彩色图像转为灰度图像
# cv2.imshow('frame',gray)
cv2.imshow('frame',frame)
if cv2.waitKey(1) == ord('q'):#key值写的太高,会导致视频帧数很低
break
print(ret)
cap.release()
cv2.destroyAllWindows()
cap.read()返回一个布尔值,如果帧的读取是正确的,就会返回True。可以通过检查他的返回值来查看视频文件是否已经到了结尾
有时候cap无法成功的初始化摄像头,此时需要用cap.isOpened()来检查是否初始化成功。返回值为True表示没有问题
可以用cap.get(propId)来获取视频的一些参数信息。propIdし0-18的整数,具体代表视频属性如下
• CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
• CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
• CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
• CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
• CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
• CV_CAP_PROP_FPS Frame rate.
• CV_CAP_PROP_FOURCC 4-character code of codec.
• CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
• CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
• CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
• CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
• CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
• CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
• CV_CAP_PROP_HUE Hue of the image (only for cameras).
• CV_CAP_PROP_GAIN Gain of the image (only for cameras).
• CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
• CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
• CV_CAP_PROP_WHITE_BALANCE Currently unsupported
• CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
某些值可以用cap.set(propId,value)来修改,value是想要设置的新值
2.从文件播放视频
把摄像头捕获中的0改成视频文件就可以了。需要注意的是在播放视频时使用cv2.waiKey()设置适当的持续时间(帧间频率),如果设置的太低视频会播放的很快,太大又会播的太慢,一般设为25ms即可
3.保存视频
需要注意到地方都写在代码注释里了
# -*- coding:utf-8 -*- import numpy as np
import cv2 cap = cv2.VideoCapture(0)#cap仅仅是摄像头的一个对象 fourcc = cv2.VideoWriter_fourcc(*'XVID')#指定编码格式,Windows使用XVID,注意该写法是固定的
out = cv2.VideoWriter('output.avi',fourcc,20.0,(640,480))#定义一个视频存储对象,以及视频编码方式,帧率,视频大小格式,最后一项设定灰度图(默认为True彩色,但试了一下改成False视频生成会出错) while (cap.isOpened()):
ret,frame = cap.read()
if ret == True:
# frame = cv2.flip(frame,0)#将图像翻转 out.write(frame)#保存每一帧合并成视频 cv2.imshow('frame',frame)
if cv2.waitKey(1) == ord('q'):
break
else:
break cap.release()
out.release()
cv2.destroyAllWindows()
OpenCV学习笔记(2)——如何用OpenCV处理视频的更多相关文章
- Opencv学习笔记1:安装opencv和VS2015并进行环境配置
用了Opencv一段时间了,简单记录一下opencv在vs2015下的配置. 第一部分:OpenCV3.2.0的下载 OpenCV官方下载地址: https://opencv.org/releases ...
- OpenCV学习笔记(二)——OpenCV环境变量配置
1. 假定电脑上已经安装了VS2010程序,若没有,首先安装vs2010. 下载OpenCV,下载的文件名为"OpenCV-2.3.1-win-superpack". 2. 解 ...
- OpenCV学习笔记(一)——OpenCV安装
1.无脑安装以下安装文件 cn_visual_studio_2010_ultimate_x86_dvd_532347.iso 2.测试Hello OpenCV 文件→新建→项目 win32应用程序→下 ...
- opencv学习笔记(七)SVM+HOG
opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...
- opencv学习笔记(六)直方图比较图片相似度
opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...
- opencv学习笔记(五)镜像对称
opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
- opencv学习笔记(二)寻找轮廓
opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...
随机推荐
- 【接口自动化】mock
mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法. 1.在测试接口时使用mock #from unittest import mock d ...
- docker的学习2
docker基本命令: run 创建一个新的容器并运行一个新的命令 -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项: -d: 后台运行容器,并返回容器 ...
- Grassfire算法- 运动规划(Motion planning)
Grassfire算法: 一.概念 这个算法是做图像处理的抽骨架处理,目的是求出图像的骨架,可以想象一片与物体形状相同的草,沿其外围各点同时点火.当火势向内蔓延,向前推进的火线相遇处各点的轨迹就是中 ...
- Image Processing and Analysis_8_Edge Detection:Edge and line oriented contour detection State of the art ——2011
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- 【Leetcode】【简单】【283. 移动零】【JavaScript】
题目描述 283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12]输出: [1,3,12,0,0] 说 ...
- 获取当前日期或者某个日期相隔N天内的全部日期以及星期几
业务需要需要获取当前日期相隔30天内的全部日期以及星期几,没插件因此特地写了一个: /* 说明:获取当前日期或者某个日期相隔N天内的全部日期以及星期几 使用: let test = new getdi ...
- go语言的defer语句
转: https://www.jianshu.com/p/5b0b36f398a2 ---------------------------------------------------------- ...
- 1118 DOM
目录 BOM与DOM window对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 计时相关 DOM对象 DOM结构 ...
- 大数据之路week04--day05(java 正则表达式)
1.1 正则表达式 1.2 简介 Regular Expression 正则表达式 常简称为: regex.正则 正则表达式是一整套约束字符串的语法规则,独立于任何编程语言 正则表达式 方便.灵 ...
- vue3.0+typeScript项目
https://segmentfault.com/a/1190000018720570#articleHeader15 https://segmentfault.com/a/1190000016423 ...