您的位置:首页 > 编程语言 > Python开发

python opencv入门(读 / 写 显示以及转换图像 和 视频读入)

2015-10-23 20:40 821 查看
参考自:《Python计算机视觉》第十章

########################################################

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)


如果输入的是视频名,则调用该视频流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: