当前位置:   article > 正文

cv2视频操作,cv.VideoCapture,cap.read(),cap.isOpened(),cap.get(propId) cap.set(propIDd,value),VideoWriter_cv2 cap.get

cv2 cap.get

目录

1.2——视频处理

1.2.1——捕获视频 cv.VideoCapture

1.2.2——cap.read()

1.2.3——cap.isOpened()

1.2.4——cap.get(propId) cap.set(propIDd,value)

1.2.5——播放视频文件

1.2.6——保存视频文件


1.2——视频处理

1.2.1——捕获视频 cv.VideoCapture

语法:cv.VideoCapture(device)

参数:device可以是设备索引(device index) 也可以是视频文件名称/地址 (the name of a video file)

  1. import numpy as np
  2. import cv2 as cv
  3. cap = cv.VideoCapture(0)
  4. if not cap.isOpened():
  5.    print("Cannot open camera")
  6.    exit()
  7. while True:
  8.    # Capture frame-by-frame
  9.    ret, frame = cap.read()
  10.    # if frame is read correctly ret is True
  11.    if not ret:
  12.        print("Can't receive frame (stream end?). Exiting ...")
  13.        break
  14.    # Our operations on the frame come here
  15.    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  16.    # Display the resulting frame
  17.    cv.imshow('frame', gray)
  18.    if cv.waitKey(1) == ord('q'):
  19.        break
  20. # When everything done, release the capture
  21. cap.release()
  22. cv.destroyAllWindows()

1.2.2——cap.read()

ret,frame=cap.read()
  • cap.read()返回一个布尔值,这里用ret接收,如果为True,则说明每一帧图像都被正常读取

  • frame用于接收得到的每一帧图片

1.2.3——cap.isOpened()

  1. if not cap.isOpened():
  2.    print("Cannot open camera")
  3.    exit()

用于判断cap是否正常初始化,返回布尔值,正常则返回True

1.2.4——cap.get(propId) cap.set(propIDd,value)

  • 可以使用函数 cap.get(propId) 来获得视频的一些参数信息。这里 propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性,其中的一些值可以使用 cap.set(propId,value) 来修改,value 就是 你想要设置成的新值

  • 可以使用 cap.get(3) 和 cap.get(4) 来查看每一帧的宽和高。 默认情况下得到的值是 640X480。但是可以使用 cap.set(3,320) 和 cap.set(4,240) 来把宽和高改成 320X240

  • propId有以下值:(以下值可以以数字代替,按顺序从0开始)

CV_CAP_PROP_POS_MSECCurrent position of the video file in milliseconds(视频文件当前文件)
CV_CAP_PROP_POS_FRAMES0-based index of the frame to be decoded/captured next
CV_CAP_PROP_POS_AVI_RATIORelative position of the video file: 0 - start of the film, 1 - end of the film.
CV_CAP_PROP_FRAME_WIDTHWidth of the frames in the video stream
CV_CAP_PROP_FRAME_HEIGHTHeight of the frames in the video stream
CV_CAP_PROP_FPSFrame rate
CV_CAP_PROP_FOURCC4-character code of codec
CV_CAP_PROP_FRAME_COUNTNumber of frames in the video file
CV_CAP_PROP_FORMATFormat of the Mat objects returned by retrieve()
CV_CAP_PROP_MODEBackend-specific value indicating the current capture mode
CV_CAP_PROP_BRIGHTNESSBrightness of the image (only for cameras)
CV_CAP_PROP_CONTRASTContrast of the image (only for cameras)
CV_CAP_PROP_SATURATIONSaturation of the image (only for cameras)
CV_CAP_PROP_HUEHue of the image (only for cameras)
CV_CAP_PROP_GAINGain of the image (only for cameras).
CV_CAP_PROP_EXPOSUREExposure (only for cameras)
CV_CAP_PROP_CONVERT_RGBBoolean flags indicating whether images should be converted to RGB.
CV_CAP_PROP_WHITE_BALANCECurrently unsupported
CV_CAP_PROP_RECTIFICATIONRectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend cur- rently)

1.2.5——播放视频文件

  1. import numpy as np
  2. import cv2 as cv
  3. cap = cv.VideoCapture('vtest.avi')
  4. while cap.isOpened():
  5.    ret, frame = cap.read()
  6.    # if frame is read correctly ret is True
  7.    if not ret:
  8.        print("Can't receive frame (stream end?). Exiting ...")
  9.        break
  10.    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
  11.    cv.imshow('frame', gray)
  12.    if cv.waitKey(1) == ord('q'):
  13.        break
  14. cap.release()
  15. cv.destroyAllWindows()
  • 将frame接收到的每一帧图片,一帧帧播放出来(imshow)

1.2.6——保存视频文件

语法:VideoWriter(output_filename,FourCC,fps,size)

参数:

  • output_filename:文件路径

  • FourCC:编码

  • fps:帧率 (每秒的帧数)

  • size:视频窗口画幅 (width,height)

编码设置:用cv.VideoWriter_fourcc()设置编码,常用编码格式有以下几种:

FourCC视频文件后缀
cv2.VideoWriter_fourcc('M', 'P', '4', 'V').mp4
cv2.VideoWriter_fourcc('X', 'V', 'I', 'D').avi
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/280326
推荐阅读
相关标签
  

闽ICP备14008679号