Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenCV load video from url

I have a video file (i.e. https://www.example.com/myvideo.mp4) and need to load it with OpenCV.

Doing the equivalent with an image is fairly trivial:

imgReq = requests.get("https://www.example.com/myimage.jpg")
imageBytes = np.asarray(bytearray(data), dtype=np.uint8)
loadedImage = cv2.imdecode(image, cv2.IMREAD_COLOR)

I would like to do something similar to the following (where loadedVideo will be similar to what OpenCV returns from cv2.VideoCapture):

videoReq = requests.get("https://www.example.com/myimage.mp4")
videoBytes = np.asarray(bytearray(data), dtype=np.uint8)
loadedVideo = cv2.videodecode(image, cv2.IMREAD_COLOR)

But cv2.videodecode does not exist. Any ideas?


Edit: Seeing as this may be a dead end with only OpenCV, I'm open for solutions that combine other imaging libraries before loading into OpenCV...if such a solution exists.

like image 757
abagshaw Avatar asked May 05 '18 04:05

abagshaw


People also ask

How does OpenCV VideoCapture work?

Capture Video from Camera OpenCV allows a straightforward interface to capture live stream with the camera (webcam). It converts video into grayscale and display it. We need to create a VideoCapture object to capture a video. It accepts either the device index or the name of a video file.

How do I add a video to OpenCV?

Let's see how to play a video using the OpenCV Python. To capture a video, we need to create a VideoCapture object . VideoCapture have the device index or the name of a video file. Device index is just the number to specify which camera.

What does cv2 VideoCapture do?

cv2. VideoCapture – Creates a video capture object, which would help stream or display the video.


Video Answer


1 Answers

It seems that cv2.videocode is not a valid OpenCV API either in OpenCV 2.x or OpenCV 3.x.

Below is a sample code it works in OpenCV 3 which uses cv2.VideoCapture class.

import numpy as np
import cv2

# Open a sample video available in sample-videos
vcap = cv2.VideoCapture('https://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_2mb.mp4')
#if not vcap.isOpened():
#    print "File Cannot be Opened"

while(True):
    # Capture frame-by-frame
    ret, frame = vcap.read()
    #print cap.isOpened(), ret
    if frame is not None:
        # Display the resulting frame
        cv2.imshow('frame',frame)
        # Press q to close the video windows before it ends if you want
        if cv2.waitKey(22) & 0xFF == ord('q'):
            break
    else:
        print "Frame is None"
        break

# When everything done, release the capture
vcap.release()
cv2.destroyAllWindows()
print "Video stop"

You may check this Getting Started with Videos tutorial for more information.

Hope this help.

like image 146
thewaywewere Avatar answered Sep 21 '22 17:09

thewaywewere