opencv-视频基本操作
写视频
# encoding: utf-8
'''
@author: gaoyongxian666
@file: opencv_video_write.py
@time: 2018/4/15 11:12
''' import cv2 # 默认是摄像头,如果是路径就是播放文件
# 他的参数可以是 设备的索引号,或者是一个视频文件。
# 设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。
# 你可以通过设置成 1 或 者其他的来选择别的摄像头。
cap = cv2.VideoCapture(0) # 这是一个获取视频的对象 # 创建视频写对象,可以将图片(或者摄像头)合成视频。
# 这是用opencv生成的fourcc codec,或者说是编码器
# Define the codec and create VideoWriter object
# FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表 可以从fourcc.org查到。
# 不同的平台依赖不同的编码格式:windows DIVX,linux DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is more preferable. MJPG results in high size video. X264 gives very small size video
fourcc = cv2.VideoWriter_fourcc(*'DIVX') # 这次我们要创建一个 VideoWriter 的对象。
# 第一个参数:输出文件 的名字。
# 第二个参数:指定 FourCC 编码。
# 第三四个参数:播放频率和帧的大小。
# 最后一个参数: isColor 标签。如果是 True,每一帧就是彩色图,
out = cv2.VideoWriter('output.mp4',fourcc, 20.0, (640,480)) while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
# cv2里面用于翻转图像
frame = cv2.flip(frame,0)
# write the flipped frame
# 写入下一个视频帧
out.write(frame)
cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break # Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
读视频:
# encoding: utf-8
'''
@author: gaoyongxian666
@file: opencv_video_read.py
@time: 2018/4/15 10:42
''' import cv2 # 声明一个 VideoCapture 对象。他的参数可以是 设备的索引号,或者是一个视频文件。
# 设备索引号就是在指定要使用的摄像头。
# 一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或 者其他的来选择别的摄像头。
# 之后,你就可以一帧一帧的捕获视频了。
# 有时 cap 可能不能成功的初始化摄像头设备。这种情况下上面的代码会报错。你可以使用 cap.isOpened(),
# 来检查是否成功初始化了。如果返回值是 True,那就没有问题。否则就要使用函数 cap.open()。
cap = cv2.VideoCapture(0) # cap.get(propId)
# 你可以使用函数 cap.get(propId) 来获得视频的一些参数信息。这里 propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性
# cap.set(propId,value)
# 其中的一些值可以使用 cap.set(propId,value) 来修改,value 就是 你想要设置成的新值。
# 例如,我可以使用 cap.get(3) 和 cap.get(4) 来查看每一帧的宽和高。 默认情况下得到的值是 640X480。
# 但是我可以使用 ret=cap.set(3,320) 和 ret=cap.set(4,240) 来把宽和高改成 320X240。 # 注意:当你的程序报错时,检查是否初始化成功
# cap.isOpened()
# cap.open():如果没有初始化成功,调用打开方法
while (cap.isOpened()):
# while (True): # Capture(捕获) frame-by-frame
# cap.read() # 返回两个值,一个布尔值(True/False)一个ndarray值。
# 如果帧读取的是正确的,就是 True。
# 所以最后你可以通过检查他的返回值来查看视频文件是否已经到了结尾。 # ndarray是抓取、解码并返回下一个视频帧
# <class 'numpy.ndarray'>,抓取不到返回为None
ret,frame = cap.read()
print(ret)
print(frame)
print(type(frame)) # 在这里进行对每一帧的操作
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
print(gray.shape) # 加上字
font = cv2.FONT_HERSHEY_SIMPLEX
img=cv2.putText(gray, 'OpenCV', (10, 180), font, 5, (255, 255, 255), 20)
cv2.imshow('frame',img)
cv2.waitKey(25)
if cv2.waitKey(1) & 0xFF == ord('q'):
break # When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

opencv-视频基本操作的更多相关文章
- OpenCV视频读取播放,视频转换为图片
转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::Vide ...
- opencv 视频处理相关
包含视频格式知识(编解码和封装格式):如何获取视频信息及视频编解码格式:opencv读取及保存视频,及opencv fourcc编码格式 一.基础知识 视频的编解码格式和封装格式 参考如山似水 视频编 ...
- 庞锋 OpenCV 视频 学习进度备忘
书签:另外跳过的内容有待跟进 学习资源: opencv视频教程目录(初级) 主讲:庞锋,毕业于电子科技大学 知识基础支持: 线性代数 应用数学 跳过的内容: 1.第1~6集跳过,简单.(2014- ...
- ffmpeg的安装--opencv视频处理必备
安装yasm(ffmpeg必备)wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar xzvf yasm-1. ...
- OpenCV——视频操作基础
读入视频: VideoCapture 类 //方法一 VideoCapture capture; capture.open("test.avi"); //方法二 VideoCapt ...
- OpenCV 视频处理框架
OpenCV 本身集成了 FFmpeg,因此对于视频是有解码和编码功能的.尽管其效率在本人看来还不能跟未被封装的FFmpeg相提并论,然用其来对视频进行解码得到图像,然后对图像进行处理并将得到的图像又 ...
- OpenCV 视频与图片序列相互转换
我们在计算机视觉相关的实验中都需要视频与图片序列之间相互转换,在平时的实验中,经常需要将视频保存为一帧一帧的图片,以获取实验结果:另一方面,很多标准的算法测试数据库都是图片序列(文件名以帧号+图片扩展 ...
- OpenCV 视频监控(Video Surveilance)的算法体系
如前面说到的,OpenCV VS提供了6组算法的接口,分别是:前景检测.新目标检测.目标跟踪.轨迹生成.跟踪后处理.轨迹分析,除了轨迹生成用于轨迹数据的保存以外,其他5个部分都是标准的视频监控算法体系 ...
- 1.6 opencv视频操作基础
利用opencv中的VideoCapture类,来对视频进行读取显示,以及调用摄像头. VideoCapture是opencv 2.X中新增的一个类,对应于之前C语言版本的CvCapture结构体.它 ...
- OpenCV视频的读写
实验室的项目是处理视频,所以就从视频的读取和写入开始吧! 常用的接口有C++和Python,Python肯定要简洁许多,不过因为项目需要,还是用C++了(PS:其实是我被Python的速度惊到了... ...
随机推荐
- 2015.4.25利用UIAutomation 替代API函数,解决了ListView无法读数据的难题,顺便实现了鼠标模拟滚轮
UIAutomation比API的优点是类似于消息处理机制,而不是主要靠模拟鼠标键盘发送消息 首先添加引用UIAutomationClient和UIAutomationTypes,在安装.net3.5 ...
- xcopy 命令行
https://www.cnblogs.com/yang-hao/p/6003308.html xcopy-参数详解 XCOPY——目录复制命令 1.功能:复制指定的目录和目录下的所有文件连同目 ...
- office 2010打开doc文档报错:Word 在尝试打开文件时遇到错误
今天在百度文库中下载了几个文档,下载后发现无法打开.出现以下的提示框. 那么,使用多年office的我,这点小问题当然难不倒我啦. 这个问题是由于系统安全设置所导致的 ,所有我们只需要处理这个安全设置 ...
- ARQ
自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层和传输层的错误纠正协议之一.它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输.如果 ...
- Redis Cluster 伪集群的搭建
简介 为何要搭建Redis集群?Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB ...
- memcache windows64 位安装
--环境: windows 2008 R2 64位 wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-x64 --目标: 实现 php 用memcach ...
- MyBatis配置Setting详细说明
该表格转载自http://blog.csdn.net/summer_yuxia/article/details/53169227 setting是指定MyBatis的一些全局配置属性,这是MyBati ...
- Luogu 3292 [SCOI2016]幸运数字
BZOJ 4568. 感觉很板. 前置技能:线性基. 放一篇感觉讲的比较丰富的博客: 戳这里. 首先要求在一个序列中任意选点使得异或和最大,当然是想到线性基了. 把问题转换到树上,如果每次询 ...
- Python程序设计7——文件读写
1 文件读写简介 文件读写是应用程序中的常用操作.下面介绍Python中进行文件读写.Python的文件读写是非常简单的. 1.1 open函数 open函数一般有了两个必须参数,一个是文件名参数,另 ...
- sed编辑器使用(转)
1.Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后, ...