opencv入门基础(二)视频的基本操作

opencv入门基础(二)视频的基本操作

一.从摄像头读取实时视频

从电脑自带摄像头获取视频并将其转化为灰度视频一同输出。

import cv2
import argparse
# 获取参数
parser = argparse.ArgumentParser()
# 添加参数
parser.add_argument("index_camera",help="the camera",type=int)
# 解析参数
args = parser.parse_args()
print("the camera index:",args.index_camera)  # 如果是0,则为电脑自己的摄像头
# 捕获摄像头的视频
capture = cv2.VideoCapture(args.index_camera)
# 获取帧的宽度
frame_width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
frame_height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
# 获知一秒钟内有多少帧数
fps = capture.get(cv2.CAP_PROP_FPS)
print("帧的宽度:{}".format(frame_width))
print("帧的高度:{}".format(frame_height))
print("帧数:{}".format(fps))
# 判断摄像头是否打开
if capture.isOpened() is False:
    print("Camera Error!")
# 从摄像头读取视频,直到关闭
while capture.isOpened():
    ret , frame = capture.read()
    # 把捕获的帧变成灰度
    gray_frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    # 显示视频流![在这里插入图片描述](https://img-blog.csdnimg.cn/2020121709274682.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg0ODQzNg==,size_16,color_FFFFFF,t_70)

    cv2.imshow("frame",frame)
    cv2.imshow("gray frame",gray_frame)
    # 键盘输入”q“,则退出关闭摄像头
    if cv2.waitKey(20) & 0xFF == ord('q'):
        break
# 释放资源
capture.release()
# 关闭窗口
cv2.destroyAllWindows()

终端运行:

python 文件名称.py 0            # 0为电脑自带摄像头的摄像头编号,可以修改

在这里插入图片描述

二.读取本地视频内容

获取播放本地视频文件。

import cv2
import argparse
# 获取参数
parser = argparse.ArgumentParser()
# 添加参数
parser.add_argument("video_path",help="the path to the video file")
# 解析参数
args = parser.parse_args()
# 加载视频文件
capture = cv2.VideoCapture(args.video_path)
# 读取视频
ret,frame = capture.read()                  # ret是否读取到了帧
while ret:
    cv2.imshow("video",frame)
    ret,frame = capture.read()
    if cv2.waitKey(20) & 0xFF == ord('q'):  # 当键盘按下q键时退出
        break
capture.release()
cv2.destroyAllWindows()

终端Terminal里面输入:

python 文件名称.py 视频文件名称.后缀

三.保存摄像头录制的一段视频到本地

获取电脑摄像头,录制一段视频并将其保留下来的流程如下:
在这里插入图片描述
程序实现代码为:

import cv2 as cv
cap = cv.VideoCapture(0)
# 指定VideoWriter的fourCC视频编码
fourcc = cv.VideoWriter_fourcc(*"DIVX")
# 指定输出文件、fourCC视频编码、FPS帧率、画面大小
out = cv.VideoWriter('output.avi',fourcc,20.0,(640,480))
while cap.isOpened():
    ret , frame = cap.read()
    if not ret:
        print("无法打开摄像头")
        break
    # 对画面帧进行反转处理
    frame = cv.flip(frame,0)
    # 将处理后的画面帧保存至output文件中
    out.write(frame)
    # 将处理后的画面帧显示在窗口中
    cv.imshow("frame",frame)
    # 获取键盘按键动作,如果按下q键,就跳出循环
    if cv.waitKey(1) == ord("q"):
        break
cap.release()
out.release() 
cv.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值