OpenCV-Python学习备忘录(2)----视频处理基础

OpenCV-Python实战(2)——图像与视频文件的处理icon-default.png?t=O83Ahttps://blog.csdn.net/LOVEmy134611/article/details/119582351

以下为本人在学习博主盼小辉OpenCV系列教程时的粗略笔记,供自己复习备忘使用。

目录

OpenCV-Python实战(2)——图像与视频文件的处理

目录:

一 读取相机画面对象:

二 读取视频对象:

三 访问捕获对象的基本信息:

使用capture.get方法,其参数如下:

四 写入视频文件的流程:

1.指定编码器:

2.创建与捕获对象相同参数的cv2.VideoWriter对象:

3.最后在读取每一帧画面后使用out.write进行写入:

五 读取指定帧:

1.首先使用capture.set设置指定帧数,再使用capture,read进行读取:

2.最后,不要忘记使用release方法释放所有资源:

六 读取处理视频文件并保存的基本框架如下:


一 读取相机画面对象:

capture = cv2.VideoCapture(index_camera)

其中index_camera = 0为默认摄像机,以此顺推。

二 读取视频对象:

capture = cv2.VideoCapture("video_path")

三 访问捕获对象的基本信息:

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)

使用capture.get方法,其参数如下:

视频属性解释
CAP_PROP_POS_FRAMES视频文件的当前帧
CAP_PROP_POS_MSEC当前帧的时间戳
CAP_PROP_FPS获取 FPS
CAP_PROP_FRAME_WODTH视频帧的宽度
CAP_PROP_FRAME_HEIGHT视频帧的高度
CAP_PROP_FRAME_COUNT视频文件的总帧数

四 写入视频文件的流程:

1.指定编码器:

fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')

   或者:

fourcc = cv2.VideoWriter_fourcc(*'XVID')

2.创建与捕获对象相同参数的cv2.VideoWriter对象:

out = cv2.VideoWriter("output_video_path", fourcc, int(fps), (int(frame_width), int(frame_height)), True)

最后一个参数值是 False 表示以灰度方式写入视频。如果我们想创建彩色视频,最后一个参数值为 True 。

3.最后在读取每一帧画面后使用out.write进行写入:

out.write(frame)

五 读取指定帧:

1.首先使用capture.set设置指定帧数,再使用capture,read进行读取:

capture.set(cv2.CAP_PROP_POS_FRAMES, frame_index)
ret, frame = capture.read()

2.最后,不要忘记使用release方法释放所有资源:

capture.release()
out.release()

六 读取处理视频文件并保存的基本框架如下:

import cv2  
import time  
  
# 初始化摄像头  
cap = cv2.VideoCapture(0)  # 0 通常代表计算机的默认摄像头  
  
if not cap.isOpened():  
    print('摄像头打开失败!')  
  
# 获取摄像头捕获视频的属性(  
cvframe2_.widthCAP =_ intPROP(_capFRAME._getHEIGHT())cv  2#. CAP帧_高度PROP  
_fpsFRAME =_ intWIDTH())cap  .#get (帧cv宽度2  
.frameCAP__heightPROP =_ intFPS())cap  .#get 帧率,但注意,对于实时摄像头,这个值可能不准确  
  
# 打印视频属性  
print(f"帧宽度: {frame_width}")  
print(f"帧高度: {frame_height}")  
print(f"帧率: {fps} (注意:这个值可能不准确,特别是对于实时摄像头)")  
  
# 设置视频写入器  
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 编码格式  
out = cv2.VideoWriter("output_gray.avi", fourcc, fps, (frame_width, frame_height), False)  # 创建一个VideoWriter对象来保存视频  
  
# 读取摄像头数据并处理  
while cap.isOpened():  
    ret, frame = cap.read()  # 从摄像头读取一帧  
    if ret:  
        start_time = time.time()  # 记录开始处理的时间  
        cv2.imshow('Camera', frame)  # 显示原始视频帧  
          
        # 将帧转换为灰度图 ,此处可以进行其他更复杂的处理流程 
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  
          
        # 将灰度帧写入视频文件  
        out.write(gray_frame)  
          
        # 等待按键事件,并计算FPS  
        if cv2.waitKey(20) & 0xFF == ord('q'):  # 如果按下'q'键,则退出循环  
            print('已退出!')  
            break  
          
        end_time = time.time()  # 记录结束处理的时间  
        processing_time = end_time - start_time  # 计算处理时间  
        fps_estimate = 1.0 / processing_time if processing_time > 0 else 0  # 估计FPS,注意这里并不准确,因为waitKey也占用了时间  
        print(f'估计FPS: {fps_estimate:.2f}')  # 格式化输出估计的FPS  
    else:  
        break  # 如果无法从摄像头读取帧,则退出循环  
  
# 释放资源  
cap.release()  
out.release()  
cv2.destroyAllWindows()

                                                               

继续加油~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值