Video dapat diolah dan digunakan sebagai dataset gambar untuk berbagai project machine learning atau neural network.
Untuk mengambil gambar-gambar dari sebuah video, kita dapat menggunakan OpenCV. OpenCV merupakan open-source library yang banyak digunakan dalam computer vision, machine learning dan image processing. Jadi saat berhadapan dengan project terkait image, besar kemungkinan akan menggunakan library ini.
Install Library
Pada artikel ini kita akan menggunakan library OpenCV pada Python. Secara umum untuk menginstall bisa menggunakan pip.
pip install opencv-python
Instruksi untuk instalasi selengkapnya bisa dilihat pada site https://pypi.org/project/opencv-python/.
Load video
Langkah pertama yang dilakukan adalah me-load video yang akan kita ekstrak gambarnya. Kita dapat me-load video dengan fungsi VideoCapture() dari OpenCV dengan path video yang akan diproses.
video = cv2.VideoCapture(video_path)
Mengambil frames
Setelah video di-load, maka kita akan membaca video dengan fungsi read(). Fungsi ini akan mengambil frame by frame dari video. ret akan bernilai False saat frame selanjutnya tidak ada lagi.
ret, frame = video.read()
if ret == False:
break
Color space RGB dan release
Ambil frame dan simpan dalam sebuah array. Frame yang diekstrak secara default adalah dalam format BGR, ubah format color space menjadi RGB.
frames = []
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
frames.append(frame)
Release video setelah frame selesai diekstrak.
video.release()
Numpy array
Jika gambar/frame yang telah diekstrak akan digunakan sebagai data untuk machine learning, sebaiknya frames diubah menjadi numpy array.
np.array(frames)
Kode selengkapnya:
def extract_frames(video_path):
# Load video
video = cv2.VideoCapture(video_path) # Loop all frames
frames = []
while(video.isOpened()):
ret, frame = video.read()
if ret == False:
break
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
frames.append(frame)
video.release()
# return as numpy array
return np.array(frames)