OpenCV-2视频基本操作

加粗样式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、视频获取
  • 二、视频读入
  • 三、视频播放
  • 四、视频保存


一、视频获取

使用 cv2.VideoCapture() 来获取视频,在括号中写入视频读取路径。获取视频的逐帧进行的。

cap = cv2.VideoCapture('video1.mp4')
cap	

cap 返回值如下:

<VideoCapture 000001B6734E1310>

亦可由摄像头输入视频,默认摄像头为0,亦可选择其他摄像头

cap = cv2.VideoCapture(0)
...
cap.release()

在使用 cv2.VideoCapture() 时习惯性在最后使用 cap.release() 释放视频。

二、视频读入

cap.read() 返回值为 retval 和 image,分别是一个布尔值和读取的一帧图片。可以用 shape 查看返回值

ret, frame = cap.read()
print(ret,frame.shape)

返回值为一个布尔值和数组每个维度的值。显示 True 表示这一帧被成功获取,1920和1080是视频每一帧图片的高和宽,3是图片的三原色。

True (1920, 1080, 3)

可使用 cap.get(3) 和 cap.get(4) 验证一下视频宽度和高度:

cap.get(3)
1080.0

这些值可以使用 cap.set(propId,value) 来修改:

一般在使用 cap.read() 时,为避免获取未开始而出现错误,可以使用 cap.isOpened() 检查,实现只有在cap已经开始的情况下读取。

while cap.isOpened():
    ret,frame = cap.read()
    ...

三、视频播放

一个播放视频的完整过程

import numpy as np
import cv2

cap = cv2.VideoCapture('video1.mp4')

while(cap.isOpened()):

    ret, frame = cap.read()
    cv2.imshow('frame',frame)
    # 按下 q 退出播放
    if cv2.waitKey(1) & 0xFF == ord('q'):	
        break

cap.release()
cv2.destroyAllWindows()

这里播放时也可将视频转换为任意模式,如改变去除颜色或RGB,再进行播放

gray = cv2.cvtColor(frame,code = cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_frame',gray)
RGB_mode = cv2.cvtColor(frame,code = cv2.COLOR_BGR2RGB)
cv2.imshow('RGB_frame',RGB_mode)

四、视频保存

保存视频可以使用 cv2.imwrite() 方法

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
cv2.VideoWriter_fourcc('M','J','P','G')

#设置输出文件的名称格式,指定FourCC编码,帧数,尺寸
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
    
    	#参数为0时竖直方向翻转图片,-1时水平竖直均翻转,1时水平翻转
        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()

你可能感兴趣的:(opencv)