1.获取下载好的视频并播放视频
import cv2#引入cv2模块
#设置视频捕获
capture = cv2.VideoCapture('0.wmv')#0.wmv表示同一文件夹目录下的视频名
while True:
ret, frame = capture.read()#变量ret判断视频帧是否成功读入;变量frame表示读取到数组类型的每一帧,实质是图片
cv2.imshow('frame', frame)
if cv2.waitKey(1)==ord('q'):#这里程序会等1毫秒,只要用户没有按下'q'键,程序就会执行下一个循环,若按下了'q'键,则程序会break跳出while循环。这里可以通过改变cv2.waitKey()里面的时间参数,来改变视频的播放速度
break
capture.release()#关闭相机
cv2.destroyWindow()#关闭窗口
imshow('参数1‘,‘参数2’):参数1表示:显示图片的窗口名称;参数2表示:储存图片数据的对象
cv2.imshow('frame', frame):将每一帧图片显示在一个叫frame的窗口上。这里解释一下,为什么这样显示在窗口上会产生视频的效果。前面操作图片的时候,我们提到过,显示多幅图像的时候,若cv2.imshow()指定相同的窗口名,这样后面显示的图片会覆盖前面的图片,而产生一个窗口。这里视频显示也是同样的道理,每次while
循环,窗口'frame
'的名字不变,这样每一帧会覆盖上一帧,就产生了视频的效果。
2.通过手机摄像头捕捉视频并保存成视频流
(1)下载IP摄像头app
(2)程序如下:
import cv2
import time
if __name__ == '__main__':
cv2.namedWindow("camera", 1)#创建窗口
# 开启ip摄像头
video = "http://admin:[email protected]:8081/"#通过IP摄像头获得手机IP
cap = cv2.VideoCapture(video) # 设置视频捕获
#创建VideoWriter类对象
fourcc = cv2.VideoWriter_fourcc(*'DIVX')#在windows下fourcc取值为DIVX
fps =cap.get(cv2.CAP_PROP_FPS)#获取帧率
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))#获取帧大小
out = cv2.VideoWriter('F:\\camera.avi',fourcc, fps, size)#第一项是视频保存路径
while(cap.isOpened()):#判断相机是否打开
ret, frame = cap.read()#变量ret判断视频帧是否成功读入;变量frame表示读取到数组类型的每一帧,实质是图片
if cv2.waitKey(1) & 0xFF == ord('q'):#按q键退出
break
if ret == True:
out.write(frame)#保存帧
cv2.imshow('frame', frame)#显示帧
cap.release()#关闭相机
out.release()
cv2.destroyWindow("camera")#关闭窗口
其中创建VideoWriter类对象过程参考链接:https://blog.csdn.net/qq_18995069/article/details/82772944