openCV入门 Gui特性 2 视频操作

基础函数

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()		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@bwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值