Python-OpenCV教程-2

OpenCV版本要求在2.3.1以上

本文主要介绍如何在Python中用OpenCV读取、保存和播放一段视频流以及用OpenCV来调用摄像头。

1.调用摄像头

为了捕捉摄像头的画面,我们首先要生成一个VideoCapture对象,这个对象的参数可以是设备号或者是视频文件的名称。设备号可以在/dev下查看,我的摄像头的设备名称是video0,所以设备号就是0。获得了VideoCapture对象后,我们就能通过这个对象的read函数来一帧一帧地获得图像了。

以下程序的效果是:从摄像头中获得图像,并把它转换成灰度图像,最后显示出来。

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

其中,cap.read()还会返回一个bool类型的值,它代表返回的这一帧图像是否是正确的。我们可以检查这个返回值来确定一段视频是否已经播放到头了。

有时,cap会无法初始化capture,如果我们要检查初始化是否正常,可以使用cap.isOpened()这个函数。如果返回True,则用cap.open()来打开。

我们还能通过cap.get(proId)来获得一些视频的属性,并且通过cap.set(proId,value)来修改某些属性。proId的取值范围是0到18。

举个例子,我们可以通过cap.get(3)和cap.get(4)来获得视频的帧宽度以及帧高度,然后通过get函数去修改它们。

2.播放一个视频文件

播放视屏文件的流程几乎和调用摄像头是一样的,但是我们在调用摄像头中有一个重要的东西没讲,那就是我们要为cv.waitKey()设置一个合适的延时,如果延时太小,那么视频就会很快,如果延时太大,那么视频就会变得很慢(用这个方法可以去看慢动作),通过设这个值为1是比较合适的。

import numpy as np
import cv2

cap = 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'):
        break

cap.release()
cv2.destroyAllWindows()

3,保存视频文件

保存视频文件的流程略微复杂,首先我们需要确定以下的一些参数:视频的FourCC格式、视频的尺寸、视频每秒的帧数以及视频的颜色。然后根据这些参数,我们生成一个VideoWriter对象来保存这段视频文件。

设置FourCC格式时,原文里采用了cv2.VideoWriter_fourcc()这个函数,但我在运行程序的时候显示这个函数不存在,所以我改用了

cv2.cv.CV_FOURCC这个函数。关于FourCC该采用哪种格式,请参考最下面的原文。

下面的范例代买从摄像头中捕捉视频,并把这个视频倒立以后进行保存。

import numpy as np
import cv2

cap = 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 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()

翻译自http://docs.opencv.org/trunk/doc/py_tutorials/py_gui/py_video_display/py_video_display.html#display-video

时间: 2024-08-10 22:58:37

Python-OpenCV教程-2的相关文章

XCode6.3上使用opencv教程(MacOSX 10.10)

OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法. 2. MacOSX上安装OpenCV 2.1. 安装Homebrew 2.2. 安装OpenCV 3. XCode建立OpenCV项目 3.1. 配置搜索路径 3.2. 添加链接库 3.3. 设置编译路径 3.

windows上安装Anaconda和python的教程详解

一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此,我们这里使用Python这个脚本语言来进行数字图像处理. 要使用Python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是Linux系统,安装都是非常简单的. 要使用python进行各种开发和科学计算,还需要安装对应的包.这和matlab非常相似,只是matla

给深度学习入门者的Python快速教程

基础篇 numpy和Matplotlib篇 本篇部分代码的下载地址: https://github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/chap5 5.3 Python的科学计算包 – Numpy numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算.这个库的前身是1995年就开始开发的一个用于数组运算的库.经过了长时间的发展,基本上成了绝大部分Python科学计算

python+opencv图像处理(一)

一.什么是opencv?  Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.MacOS操作系统上.它轻量级而且高效--由一系列 C 函数和少量C++类构成,同时提供了Python.Ruby.MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法.最新版本是3.1 ,201

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

python基础教程:python的环境搭建

Python编程语言可应用于多平台包括 Linux 和 Mac OS X.一般的 Linux 发行版本都自带 Python,Mac OS X 最新版也自带了 Python,也就是已经安装好了,不需要再配置. Windows 下直接下载最新版的 Python 2.7.9,安装的时候注意选择 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本. Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, Su

python基础教程(第二版)

开始学习python,根据Python基础教程,把里面相关的基础章节写成对应的.py文件 下面是github上的链接 python基础第1章基础 python基础第2章序列和元组 python基础第3章使用字符串 python基础第4章字典 python基础第5章循环 python基础第6章函数和魔法参数 python基础第7章类 python基础第8章异常 python基础第9章魔法方法.属性和迭代器 python基础第11章文件 python基础第12章GUI(wxPython) pytho

Python基础教程(第十章 自带电池)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5459376.html______ Created on Marlowes 现在已经介绍了Python语言的大部分基础知识.Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装中还包括一组模块,称为标准库(standard library).之前已经介绍了一些模块(例如math和cmath,其中包

RPi 2B python opencv camera demo example

/************************************************************************************** * RPi 2B python opencv camera demo example * 声明: * 本文主要记录RPi 2B 使用python opencv来获取图片的方式. * * 2016-2-24 深圳 南山平山村 曾剑锋 **********************************************

Python快速教程

Python快速教程 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库.拓展库,乱花渐欲迷人眼.我一直希望写一个快速的.容易上手的Python教程,而且言语简洁,循序渐进,让没有背景的读者也可以从基础开始学习.我将在每一篇中专注于一个小的概念,希望在闲暇时可以很快读完. 小提醒 教程将专注于Python基础,语法基于Pytho