写视频

# 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-视频基本操作的更多相关文章

  1. OpenCV视频读取播放,视频转换为图片

    转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::Vide ...

  2. opencv 视频处理相关

    包含视频格式知识(编解码和封装格式):如何获取视频信息及视频编解码格式:opencv读取及保存视频,及opencv fourcc编码格式 一.基础知识 视频的编解码格式和封装格式 参考如山似水 视频编 ...

  3. 庞锋 OpenCV 视频 学习进度备忘

    书签:另外跳过的内容有待跟进 学习资源: opencv视频教程目录(初级)   主讲:庞锋,毕业于电子科技大学 知识基础支持: 线性代数 应用数学 跳过的内容: 1.第1~6集跳过,简单.(2014- ...

  4. ffmpeg的安装--opencv视频处理必备

    安装yasm(ffmpeg必备)wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar xzvf yasm-1. ...

  5. OpenCV——视频操作基础

    读入视频: VideoCapture 类 //方法一 VideoCapture capture; capture.open("test.avi"); //方法二 VideoCapt ...

  6. OpenCV 视频处理框架

    OpenCV 本身集成了 FFmpeg,因此对于视频是有解码和编码功能的.尽管其效率在本人看来还不能跟未被封装的FFmpeg相提并论,然用其来对视频进行解码得到图像,然后对图像进行处理并将得到的图像又 ...

  7. OpenCV 视频与图片序列相互转换

    我们在计算机视觉相关的实验中都需要视频与图片序列之间相互转换,在平时的实验中,经常需要将视频保存为一帧一帧的图片,以获取实验结果:另一方面,很多标准的算法测试数据库都是图片序列(文件名以帧号+图片扩展 ...

  8. OpenCV 视频监控(Video Surveilance)的算法体系

    如前面说到的,OpenCV VS提供了6组算法的接口,分别是:前景检测.新目标检测.目标跟踪.轨迹生成.跟踪后处理.轨迹分析,除了轨迹生成用于轨迹数据的保存以外,其他5个部分都是标准的视频监控算法体系 ...

  9. 1.6 opencv视频操作基础

    利用opencv中的VideoCapture类,来对视频进行读取显示,以及调用摄像头. VideoCapture是opencv 2.X中新增的一个类,对应于之前C语言版本的CvCapture结构体.它 ...

  10. OpenCV视频的读写

    实验室的项目是处理视频,所以就从视频的读取和写入开始吧! 常用的接口有C++和Python,Python肯定要简洁许多,不过因为项目需要,还是用C++了(PS:其实是我被Python的速度惊到了... ...

随机推荐

  1. Oracle的REGEXP_REPLACE函数简单用法

    转载:http://blog.csdn.net/itmyhome1990/article/details/50380718

  2. Android webRTC 代码下载编译

    1.安装depot tools git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 然后把把depot ...

  3. phonegap创建项目

    cordova create LynApp com.LynApp "LynApp"cd LynAppcordova platform add androidcordova buil ...

  4. PHP通过加锁实现并发情况下抢码功能

    本文基于php语言使用加锁实现并发情况下抢码功能,特定时间段开放抢码并不允许开放的码重复: 需求:抢码功能 要求: 1.特定时间段才开放抢码: 2.每个时间段放开的码是有限的: 3.每个码不允许重复: ...

  5. Swing界面组件的通用属性

    ----------------siwuxie095                             Swing 界面组件(控件)的通用属性:         (1)enabled:启用/禁用 ...

  6. Tensorflow递归神经网络学习练习

    import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data #载入数据集mnist = inpu ...

  7. Ubuntu 添加用户到sudoers

    ubuntu上的用户有时候需要用到管理员权限,可以通过修改 /etc/sudoers 文件内容添加用户权限. 操作方式 1. 首先以root进入系统打开文件 sudo vim /etc/sudoers ...

  8. Win10 VS2013 PCL1.8.1和依赖项VTK8.0.1, QHuall(2.15.2), FLANN1.9.1,Boost1.59.0,Zbil1.2.11和libPNG1.6.34编译安装

    编译和安装过程最好使用管理员权限去操作,避免不必要的错误. 一般而言为了区分Debug和Release库,添加输入变量 Name: CMAKE_DEBUG_POSTFIX Type: STRING V ...

  9. DR客户端一直连接服务器....(6)

    DR客户端一直连接服务器....(非未选择网卡)解决方法: 控制面板-->网络和 Internet-->网络连接,打开本地连接(以太网)属性,将IPV4协议前面的对勾去掉,重启DR 这样D ...

  10. Entity Framework Tutorial Basics(1):Introduction

    以下系列文章为Entity Framework Turial Basics系列 http://www.entityframeworktutorial.net/EntityFramework5/enti ...