转载自:http://segmentfault.com/a/1190000003804797

视频的处理和图片的处理类似,只不过视频处理需要连续处理一系列图片。

一般有两种视频源,一种是直接从硬盘加载视频,另一种是获取摄像头视频。

0x00. 本地读取视频

核心函数:

cv.CaptureFromFile()

代码示例:

import cv2.cv as cvcapture = cv.CaptureFromFile('myvideo.avi')nbFrames = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_COUNT))#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 streamfps = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FPS)wait = int(1/fps * 1000/1)duration = (nbFrames * fps) / 1000print 'Num. Frames = ', nbFrames
print 'Frame Rate = ', fps, 'fps'
print 'Duration = ', duration, 'sec'for f in xrange( nbFrames ):frameImg = cv.QueryFrame(capture)print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_POS_FRAMES)cv.ShowImage("The Video", frameImg)cv.WaitKey(wait)

cv2

import numpy as np
import cv2cap = cv2.VideoCapture('vtest.avi')while(cap.isOpened()):ret, frame = cap.read()gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('frame',gray)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

0x01. 摄像头视频读取

核心函数:

cv.CaptureFromCAM()

示例代码:

import cv2.cv as cvcapture = cv.CaptureFromCAM(0)while True:frame = cv.QueryFrame(capture)cv.ShowImage("Webcam", frame)c = cv.WaitKey(1)if c == 27: #Esc on Windowsbreak

cv2

import numpy as np
import cv2cap = cv2.VideoCapture(0)while(True):# Capture frame-by-frameret, frame = cap.read()# 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()

0x02. 写入视频

摄像头录制视频

import cv2.cv as cvcapture=cv.CaptureFromCAM(0)
temp=cv.QueryFrame(capture)
writer=cv.CreateVideoWriter("output.avi", cv.CV_FOURCC("D", "I", "B", " "), 5, cv.GetSize(temp), 1)
#On linux I used to take "M","J","P","G" as fourcccount=0
while count<50:print countimage=cv.QueryFrame(capture)cv.WriteFrame(writer, image)cv.ShowImage('Image_Window',image)cv.WaitKey(1)count+=1

从文件中读取视频并保存

import cv2.cv as cv
capture = cv.CaptureFromFile('img/mic.avi')nbFrames = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_COUNT))
width = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH))
height = int(cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT))
fps = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FPS)
codec = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FOURCC)wait = int(1/fps * 1000/1) #Compute the time to wait between each frame queryduration = (nbFrames * fps) / 1000 #Compute durationprint 'Num. Frames = ', nbFrames
print 'Frame Rate = ', fps, 'fps'writer=cv.CreateVideoWriter("img/new.avi", int(codec), int(fps), (width,height), 1) #Create writer with same parameterscv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_FRAMES,80) #Set the number of framesfor f in xrange( nbFrames - 80 ): #Just recorded the 80 first frames of the videoframe = cv.QueryFrame(capture)print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_POS_FRAMES)cv.WriteFrame(writer, frame)cv.WaitKey(wait)

cv2

import numpy as np
import cv2cap = cv2.VideoCapture(0)# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
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()

Python-OpenCV 处理视频(一): 输入输出相关推荐

  1. 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题

    解决Python OpenCV 读取视频抽帧出现error while decoding的问题 1. 问题 2. 解决 3. 源代码 参考 1. 问题 读取H264视频,抽帧视频并保存,报错如下: [ ...

  2. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

  3. python图片转视频加特效_使用Python opencv实现视频与图片的相互转换

    因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/Pyc ...

  4. python opencv 图片/视频 拼接

    python opencv 图片/视频 拼接 # coding: utf-8 # 像写诗一样写代码 import numpy as np import cv2img_A_path = "C: ...

  5. python opencv写视频——cv2.VideoWriter()

    python opencv写视频--cv2.VideoWriter() 函数原型 cv2.VideoWriter() VideoWriter(filename, fourcc, fps, frameS ...

  6. python opencv PIL 视频分割成图片 图片合成为视频 修改图片大小(抗锯齿)

    Python代码将原有的视频分割成图片,我的例子是一帧一帧的分割 用python+opencv完成视频的分割 import cv2 #导入opencv模块 print(2) #测试是否运行 vc=cv ...

  7. python opencv读取视频没声音_python + opencv: 解决不能读取视频的问题

    博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像,程序如下: cap = cv2.VideoCapture(0) ret, frame = cap.read() 使用这个程序 ...

  8. python+opencv横向拼接视频

    如果想利用python+opencv把两段视频拼接在一起,可以有两种想法: 1. 第二个视频直接接在第一个视频后边,延长帧.这种我称为"纵向拼接": 2. 第一个视频和第二个视频每 ...

  9. python opencv 录制视频_如何使用OpenCV、Python和深度学习在图像和视频中实现面部识别?...

    Face ID 的兴起带动了一波面部识别技术热潮.本文将介绍如何使用 OpenCV.Python 和深度学习在图像和视频中实现面部识别,以基于深度识别的面部嵌入,实时执行且达到高准确度. 以下内容由 ...

  10. 用Python Opencv实现视频快进

    怎么用Opencv实现视频快进?小白可能会增大ftp,减小等待时间,但是这种方式大大增加了程序计算量,而且快进有上限,一般电脑全力计算也只不过能快进两三倍而已.要想实现大步幅快进就要用到跳帧:比如读取 ...

最新文章

  1. 术,路,心:陈天桥的大脑行旅
  2. [云炬创业基础笔记]第十一章创业计划书测试10
  3. namefilter 前台反斜杠格式_001获取小猴子的信息并格式化输出
  4. 我的世界服务器怎么增加npc,我的世界自定义npc mod怎么新建一个任务?|开放性强...
  5. Pygame实战项目:用300行代码写出贪吃蛇小游戏
  6. cname 别名记录 解析过程_云解析是什么?需要购买吗?
  7. C# - 为引用类型重定义相等性 - 继承相关
  8. C#通过属性名字符串获取、设置对象属性值
  9. CentOS上快速安装Oracle11g数据库
  10. 在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度转
  11. php高强度精密涂覆钢管,电力内外涂覆钢管
  12. jQuery碎语(2) 事件
  13. java.lang.ClassNotFoundException: org.apache.hive.service.cli.thrift.TCLIService$Iface
  14. 马上就要十一大长假了!还没订好机票?用Python写了一个钉钉订低价票脚本!
  15. 【论文精读1】CSDI: Conditional Score-based Diffusion Models for Probabilistic Time Series Imputation
  16. 传真百科:传真通讯技术的发展历史
  17. ROS2教程(入门级):创建ROS2工作空间
  18. Java中的数据类型转换
  19. phpmyadmin mysql管理器_phpMyAdmin(MySQL的资料库管理工具)
  20. [已解决]EIsevier模板中hyperref包冲突导致无法修改标注颜色

热门文章

  1. 量化派基于Hadoop、Spark、Storm的大数据风控架构--转
  2. android intent-fliter 标准Category
  3. 【风险管理】网贷平台风险类型及管控能力
  4. 【Python】进制转换
  5. 【采用】无监督核心聚类算法
  6. 风控建模中的样本偏差与拒绝推断
  7. ubuntu jdk
  8. 美国进入“非结构化”数据分析新时代
  9. 若能回到五年前,我会告诉自己这些创业道理
  10. 数据分层/ODS/DW/DM