Source code for neurokit2.data.read_video
# -*- coding: utf-8 -*-
import os
import numpy as np
[docs]
def read_video(filename="video.mp4"):
"""**Reads a video file into an array**
Reads a video file (e.g., .mp4) into a numpy array of shape. This function requires OpenCV to
be installed via the ``opencv-python`` package.
Parameters
----------
filename : str
The path of a video file.
Returns
-------
array
numpy array of shape (frame, RGB-channel, height, width).
int
Sampling rate in frames per second.
Examples
--------
.. ipython:: python
import neurokit2 as nk
# video, sampling_rate = nk.read_video("video.mp4")
"""
# Try loading cv2
try:
import cv2
except ImportError:
raise ImportError(
"The 'cv2' module is required for this function to run. ",
"Please install it first (`pip install opencv-python`).",
)
# Check if file exists
assert os.path.isfile(filename) is True, f"No file found with the specified name ({filename})."
capture = cv2.VideoCapture(filename)
sampling_rate = int(capture.get(cv2.CAP_PROP_FPS))
frames = []
while capture.isOpened():
success, frame = capture.read() # By default frame is BGR
if not success:
break
frames.append(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) # Convert to RGB
capture.release()
# Swap axes to be (frame, RGB-channel, height, width)
return np.array(frames).swapaxes(3, 1).swapaxes(3, 2), sampling_rate