python opencv入门(读 / 写 显示以及转换图像 和 视频读入)
2015-10-23 20:40
821 查看
参考自:《Python计算机视觉》第十章
########################################################
OpenCV提供了两个Python接口,旧的cv模块使用OpenCV内部的数据类型,并且从Numpy使用起来可能需要一些技巧;而新的cv模块使用Numpy数组,并且使用起来更加直观。
导入新的cv模块的方式:
导入旧的cv模块的方式:
以下函数均来自cv2模块
#########################################################
读 / 写 显示以及转换图像
返回的img是一个Numpy的数组对象
OpenCV的图像为Numpy中的多维数组对象
输入文件名和待保存对象即可,函数imwrite()会根据文件后缀自动转换图像
在OpenCV中,图像不是按传统的RGB颜色通道,而是按BGR顺序(即RGB的倒序)存储的。读取图像时默认的是BGR
颜色空间的转换用函数cvtColor()实现,常用的转换代码为:
上面每个转换代码中,转换后的图像颜色通道数与对应的转换代码相匹配,比如对于灰度图像只有一个通道,对于RGB和BGR图像则有三个图像
输入参数为窗口名和图像对象即可
参数可选,为空表示窗口一直停留,直到有按键按下;可以为数字,表示窗口停留的时间,以毫秒计
#####################################################################
视频读入
单纯使用Python来处理视频有些困难,因为需要考虑速度 / 编解码器 / 摄像机 / 操作系统和文件格式。目前还没有针对Python的视频库,使用OpenCV的Python接口是唯一还不错的选择。
OpenCV能够很好的支持从摄像头读取视频
example:捕获视频帧并在OpenCv窗口中显示这些视频帧
程序详解:
1.捕获对象VideoCapture从摄像头或文件捕获视频。通过一个整数进行初始化,该整数为视频设备的id:如果仅有一个摄像头与计算机相连接,那么该摄像头的id为0;
2.read()方法解码并返回下一视频帧,第一个变量ret是一个判断视频帧是否成功读入的标志,第二个变量则是实际读入的图像数组;
2.函数waitKey()等待用户按键,如果按下的是Esc(ASCII码是27)键,则退出应用;如果按下的是空格键,就保存该视频帧
如果输入的是视频名,则调用该视频流
########################################################
OpenCV提供了两个Python接口,旧的cv模块使用OpenCV内部的数据类型,并且从Numpy使用起来可能需要一些技巧;而新的cv模块使用Numpy数组,并且使用起来更加直观。
导入新的cv模块的方式:
import cv2
导入旧的cv模块的方式:
import cv2.cv
以下函数均来自cv2模块
#########################################################
读 / 写 显示以及转换图像
help(cv2.imread)
#读取图像result.jpg(在当前目录) img=cv2.imread("result.jpg")
返回的img是一个Numpy的数组对象
type(img)
OpenCV的图像为Numpy中的多维数组对象
help(cv2.imwrite)
输入文件名和待保存对象即可,函数imwrite()会根据文件后缀自动转换图像
cv2.imwrite("result.jpg", img) #保存为jpg格式的文件
help(cv2.cvtColor)
在OpenCV中,图像不是按传统的RGB颜色通道,而是按BGR顺序(即RGB的倒序)存储的。读取图像时默认的是BGR
颜色空间的转换用函数cvtColor()实现,常用的转换代码为:
cv2.COLOR_BGR2GRAY #BGR图像转换为灰度图像 cv2.COLOR_BGR2RGB #BGR格式图像转换为RGB格式图像 cv2.COLOR_GRAY2BGR #灰度图像转换成BGR图像
上面每个转换代码中,转换后的图像颜色通道数与对应的转换代码相匹配,比如对于灰度图像只有一个通道,对于RGB和BGR图像则有三个图像
#读取图像 im=cv2.imread("result.jpg") #创建灰度图像 gray=cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
help(cv2.imshow)
输入参数为窗口名和图像对象即可
help(cv2.waitKey)
参数可选,为空表示窗口一直停留,直到有按键按下;可以为数字,表示窗口停留的时间,以毫秒计
#读取图像 im=cv2.imread('result.jpg') #显示图像 cv2.imshow('opencv', im) cv2.waitKey()
#####################################################################
视频读入
单纯使用Python来处理视频有些困难,因为需要考虑速度 / 编解码器 / 摄像机 / 操作系统和文件格式。目前还没有针对Python的视频库,使用OpenCV的Python接口是唯一还不错的选择。
OpenCV能够很好的支持从摄像头读取视频
example:捕获视频帧并在OpenCv窗口中显示这些视频帧
import cv2 #设置视频捕获 cap=cv2.VideoCapture(0) #循环 while True: ret,im=cap.read() #显示在窗口上 cv2.imshow('video test', im) key=cv2.waitKey(10) if key==27: break if key==ord('' ): cv2.imwrite('vid_result.jpg', im)
程序详解:
1.捕获对象VideoCapture从摄像头或文件捕获视频。通过一个整数进行初始化,该整数为视频设备的id:如果仅有一个摄像头与计算机相连接,那么该摄像头的id为0;
2.read()方法解码并返回下一视频帧,第一个变量ret是一个判断视频帧是否成功读入的标志,第二个变量则是实际读入的图像数组;
2.函数waitKey()等待用户按键,如果按下的是Esc(ASCII码是27)键,则退出应用;如果按下的是空格键,就保存该视频帧
cap=cv2.VideoCapture(videoname)
如果输入的是视频名,则调用该视频流
相关文章推荐
- python链接postgresql数据库
- python中的else子句
- windows下面安装Python和pip
- python爬取网易评论
- Python lambda 匿名函数 (二十二)
- 人们为什么不使用Python3?
- Python -- 文档测试
- python copy 深拷贝与浅拷贝
- 通过编写聊天程序来熟悉python中多线程及socket的用法
- Python 正则表达式
- Python 正则表达式
- python 连接 db2
- Notes on Generator 1
- 【Python之旅】第八篇:开发监控软件的思想与流程
- 【Python之旅】第八篇:开发监控软件的思想与流程
- 安装pip ipython
- PHP、C#、JAVA、Python...学哪一种可以赚钱多和找到工作
- 如何用Python实现八大排序算法
- Python生成器
- 在 android 上运行 python 的方法