LearnOpenCV – Reading and Writing Videos

读取视频

import cv2

# Create a video capture object, in this case we are reading the video from a file
vid_capture = cv2.VideoCapture('videos/test.avi')

# Reading an Image Sequence
# vid_capture = cv2.VideoCapture('Resources/Image_sequence/Cars%04d.jpg')

if not vid_capture.isOpened():
    print("Error opening the video file")
# Read fps and frame count
else:
    # Get frame rate information
    # You can replace 5 with CAP_PROP_FPS as well, they are enumerations
    fps = vid_capture.get(5)
    print('Frames per second : ', fps, 'FPS')

    # Get frame count
    # You can replace 7 with CAP_PROP_FRAME_COUNT as well, they are enumerations
    frame_count = vid_capture.get(7)
    print('Frame count : ', frame_count)

while vid_capture.isOpened():
    # vid_capture.read() methods returns a tuple, first element is a bool
    # and the second is frame
    ret, frame = vid_capture.read()
    if ret:
        cv2.imshow('Frame', frame)
        # 20 is in milliseconds, try to increase the value, say 50 and observe
        key = cv2.waitKey(20)

        if key == ord('q'):
            break
    else:
        break

# Release the video capture object
vid_capture.release()
cv2.destroyAllWindows()

These are the main functions in OpenCV video I/O that we are going to discuss in this blog post:

  1. cv2.VideoCapture – Creates a video capture object, which would help stream or display the video.
  2. cv2.VideoWriter – Saves the output video to a directory.
  3. In addition, we also discuss other needed functions such as cv2.imshow(), cv2.waitKey() and the get() method which is used to read the video metadata such as frame height, width, fps etc.

现在让我们看一下如何写视频。

import cv2

url = "http://YourIp/video"
vid_capture = cv2.VideoCapture(url)

# Obtain frame size information
frame_width = int(vid_capture.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(vid_capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_size = (frame_width, frame_height)
fps = 20

# Initialize video writer object
output = cv2.VideoWriter('videos/output_video_from_file.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 20, frame_size)

while vid_capture.isOpened():
    # vid_capture.read() methods returns a tuple, first element is a bool
    # and the second is frame

    ret, frame = vid_capture.read()
    if not ret:
        print('Stream disconnected')
        break
    # Write the frame to the output files
    output.write(frame)
    cv2.imshow('frame', frame)

    # 30 is in milliseconds, try to increase the value, say 50 and observe
    if cv2.waitKey(30) & 0xFF == ord('q'):
        break

output.release()
vid_capture.release()
cv2.destroyAllWindows()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
上一篇 2022年5月31日 上午11:33
下一篇 2022年5月31日 上午11:36

相关推荐

本站注重文章个人版权,不会主动收集付费或者带有商业版权的文章,如果出现侵权情况只可能是作者后期更改了版权声明,如果出现这种情况请主动联系我们,我们看到会在第一时间删除!本站专注于人工智能高质量优质文章收集,方便各位学者快速找到学习资源,本站收集的文章都会附上文章出处,如果不愿意分享到本平台,我们会第一时间删除!