基础函数
cv2.VideoCapture(a) # a为设备索引号,笔记本内置摄像头为0,播放视频需将a改为视频文件的名字,,,又称为初始化摄像头设备
cap.release() #释放摄像头
cap.read() #返回一个布尔值(True/False)和图像,你可以根据它的返回的布尔值来判断视频文件是否已经到了结尾
#ret, frame = cap.read() ret:布尔值 frame:返回捕获的图像
cap.isOpened() #检查摄像头有没有成功的被打开(初始化是否成功)
cap.get(propId) # 获得视频的一些参数信息,propId可以是0到18之间的任何整数。每个数代表视频的一个属性
#0:视频文件的当前位置(以毫秒为单位)或视频捕获时间戳。
#3:视频每一帧的宽。
#4:视频每一帧的高。
#......
cap.set(propId,value) #修改其中的一些值,value就是你想要设置成的新值
#例如:用cap.get(3)来查看每一帧的宽,,用cap.set(3,320)把宽设为320
cv2.waitKey(a)&0XFF #控制视频的播放速度,a高,视频播放的慢
cv2.VideoWriter.write(image) #将帧图像保存为视频文件
cv2.VideoWriter()
cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
VideoWriter(filename, fourcc, fps, frameSize[, isColor])
1.filename 保存输出视屏文件名(要保存的文件的路径)
2.fourcc :指定编码器
#cv2.VideoWriter_fourcc('P','I','M','1')---MPEG-1编码类型,文件扩展名.avi。
3.fps:保存视屏文件帧率
4.frameSize:要保存的文件的画面尺寸
5.isColor:设置视屏文件为彩色(True)或者灰度 #(默认为True)
cv2.VideoWriter_fourcc(**‘XVID’)
#fourcc意为四字符代码(Four-Character Codes),顾名思义,该编码由四个字符组成,下面是VideoWriter_fourcc对象一些常用的参数,注意:字符顺序不能弄混
#cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('P', 'I', 'M', 'I'),该参数是MPEG-1编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv
#cv2.VideoWriter_fourcc('F', 'L', 'V', '1'),该参数是Flash视频,文件名后缀为.flv
色彩空间转化函数 cv2.cvtColor(image,flag) ,flag代表转换方式
opencv中有多种色彩空间,包括 RGB、HSI、HSL、HSV、HSB、YCrCb、CIE XYZ、CIE Lab8种,使用中经常要遇到色彩空间的转化
#HSV 表示h色彩、s饱和度、v亮度
image_hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
用这个函数把图像从RGB转到HSV夜色空间,在opencv中默认的颜色空间是BGR。
cv2.flip(src, flipCode[, dst]) #src为要操作的图像
#图片也可以
flipCode=-1 #水平垂直翻转
flipCode= 0 #垂直翻转
flipCode= 1 #水平翻转
#例: cv2.imshow('img1',cv2.flip(img,-1))#水平垂直翻转
用摄像头捕捉视频
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #灰色图像
#cvtColor(frame,0/1) 彩色图像
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
文件中播放视频
import cv2
cap = cv2.VideoCapture('output.avi')
while(True):
ret,frame =cap.read()
frame = cv2.cvtColor(frame,0)
cv2.imshow('frame',frame)
if cv2.waitKey(25)&0xFF == ord('q') : #可调整视频播放速度
break
cap.release()
cv2.destroyAllWindows()
保存视频
import numpy as np
import cv2
cap = cv2.VideoCapture(0) #打开摄像头
fourcc = cv2.VideWriter_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,1) #水平翻转
out.write(frame) #保存一帧图像
cv2.imshow('frame',frame) #显示一帧图像
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release() #关闭摄像头
out.release()
cv2.destroyAllWindows()