opencv视频相关处理

cv2.waitKey()

是一个键盘绑定函数。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。

import cv2
img = cv2.imread('./Images//1.JPG',0)  #读取图片
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:         # 等待ESC退出
    cv2.destroyAllWindows()
elif k == ord('s'): # 等待关键字,保存和退出
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()
cv2.destroyAllWindows()

cv2.destroyAllWindows()

破坏我们创建的所有窗口。如果要销毁任何特定的窗口,请使用函数 cv.destroyWindow()在其中传递确切的窗口名称作为参数。

cv2.VideoCapture()

创建VideoCapture对象来获取摄像头(数字)或者视频文件(地址)。

import cv2 as cv
cap = cv.VideoCapture(0)  #调用摄像头   地址则为视频

if not cap.isOpened():
    print("Cannot open camera")
    exit()
while True:
    # 逐帧捕获
    ret, frame = cap.read()  #返回Ture/False 和  True时读取的帧在
    # 如果正确读取帧,ret为True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
        # 我们在框架上的操作到这里
    # frame = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)  #转为灰度图
    # 显示结果帧
    cv.imshow('frame', frame)
    if cv.waitKey(1) == ord('q'):
        break

cap.release()
cv.destroyAllWindows()

cap.get(propId) 获得视频相关属性,cap.set(propId,value)用于修改属性。

cap.get(cv.CAP_PROP_FRAME_WIDTH) #获得宽
cap.get(cv.CAP_PROP_FRAME_HEIGHT) #获得长
CAP.get(cv.CAP_PROP_FRAME_COUNT)   #获得视频帧数
ret = cap.set(cv.CAP_PROP_FRAME_WIDTH,320)  #修改视频宽分辨率为320

保存视频

捕捉视频,一帧一帧处理后保存视频。对于图像,只需使用 cv.imwrite()。首先需要创建一个 VideoWriter 对象,传递帧率的数量和帧大小,颜色标志。
从摄像机捕捉画面,沿垂直方向翻转并保存:

import cv2 as cv

cap = cv.VideoCapture(0)
# 定义编解码器并创建VideoWriter对象
out = cv.VideoWriter('output.mp4',cv.VideoWriter_fourcc(*'XVID'),20.0,(640,480))  #参数:地址,FourCC代价,分辨率,(视频宽高)
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print('can not find frame')
        break
    frame = cv.flip(frame,1)
    #写入翻转的框架
    out.write(frame)
    cv.imshow('frame',frame)
    if cv.waitKey(1) == ord('q'):
        break
cap.release()
out.release()
cv.destroyAllWindows()


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常好的问题!OpenCV 是一个开源的计算机视觉库,提供了许多功能强大的图像和视频处理技术。对于视频处理OpenCV 提供了一些基本的操作,如读取、写入和显示视频,以及一些更高级的功能,如视频分割、运动检测和目标跟踪等。以下是一些常见的视频处理任务和 OpenCV 中相应的函数: 1. 读取视频:使用 `cv2.VideoCapture` 函数来打开视频文件,并使用 `read` 方法逐帧读取视频内容。 2. 写入视频:使用 `cv2.VideoWriter` 函数创建一个视频写入对象,并使用 `write` 方法将每一帧写入视频。 3. 显示视频:使用 `cv2.imshow` 函数在窗口中显示视频帧,并结合 `cv2.waitKey` 函数来控制显示的帧率。 4. 视频分割:可以使用背景减除技术来实现视频分割。OpenCV 中提供了 `cv2.createBackgroundSubtractorMOG2` 和 `cv2.createBackgroundSubtractorKNN` 函数来创建背景减除器,然后通过 `apply` 方法将其应用于每一帧图像。 5. 运动检测:可以通过计算相邻帧之间的差异来进行运动检测。OpenCV 中提供了 `cv2.absdiff` 函数来计算两幅图像的差异,并可通过阈值化和形态学操作来提取感兴趣的运动区域。 6. 目标跟踪:可以使用目标检测算法(如 Haar 特征检测)或机器学习算法(如基于深度学习的目标检测器)来识别和跟踪视频中的特定目标。OpenCV 中提供了 `cv2.CascadeClassifier` 类来实现 Haar 特征检测器,以及一些预训练的深度学习模型供目标检测使用。 这些只是 OpenCV视频处理功能的一小部分,你可以根据具体的需求进一步探索和使用 OpenCV 的其他函数和方法来完成更复杂的视频处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值