BELAJAR ANALISIS DAN BAHASA PEMROGRAMAN

Memulai Video dengan OpenCV-Python

Oke gengs setelah kemarin membahas tentang Gambar menggunakan OpenCV kali ini kita akan membahas mengenai opencv khususnya mengenai video. Jadi disini kita akan pelajari tentang :
• Membaca video, menampilkan video dan menyimpan video.
• Menangkap dari kamera dan menampilkannya.
• Fungsi: cv2. VideoCapture(), cv2. VideoWriter()
Merekam Video dari kamera
Sering kali, kita harus menangkap live streaming dengan kamera. OpenCV menyediakan antarmuka yang sangat sederhana ini. Mari kita menangkap video dari kamera (saya menggunakan webcam built-in laptop saya), mengubahnya menjadi grayscale video dan menampilkannya. Hanya tugas sederhana untuk memulai.
Untuk menangkap video, Anda perlu membuat sebuah objek VideoCapture. Argumen dapat indeks perangkat atau nama video file. Perangkat indeks adalah hanya nomor untuk menentukan kamera. Biasanya satu kamera akan terhubung (seperti dalam kasus saya). Jadi saya hanya menggunakan 0 (atau 1). Anda dapat memilih kamera kedua dengan menggunakan 1 dan sebagainya. Setelah itu, Anda dapat menangkap frame-by frame. Tapi pada akhirnya, jangan lupa untuk menyelesaikan penangkapan.
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)

if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
Kita bisa mendapatkan output seperti berikut ini

Cap.read() return bool (True/False). Jika bingkai dibaca dengan benar, maka akan benar. Sehingga Anda dapat memeriksa akhir video dengan memeriksa nilai return ini. Kadang-kadang, cap mungkin tidak memiliki iinisialisasi pada capture. Dalam hal ini, kode ini menunjukkan kesalahan. Anda dapat memeriksa apakah sudah diinisialisasi atau tidak dengan metode cap.isOpened(). Jika itu benar, OK sebaliknya membuka menggunakan cap.open(). Anda juga dapat mengakses beberapa fitur dari video ini menggunakan metode cap.get(propId) di mana propId adalah sebuah nomor dari 0 sampai 18. Setiap angka menunjukkan properti video (jika berlaku untuk video itu) dan rincian lengkap dapat dilihat di sini: properti Identifier. Beberapa nilai-nilai ini dapat dimodifikasi dengan menggunakan cap.set (propId, value). Nilai ini adalah nilai baru yang Anda inginkan. Sebagai contoh, saya dapat memeriksa bingkai lebar dan tinggi oleh cap.get(3) dan cap.get(4). Ini memberi saya 640 x 480 secara default. Tapi aku ingin memodifikasi 320 x 240. Hanya menggunakan ret = cap.set(3,320) dan ret = cap.set(4,240).

Sebagai contoh, saya dapat memeriksa bingkai lebar dan tinggi oleh cap.get(3) dan cap.get(4). Ini memberi saya 640 x 480 secara default. Tapi aku ingin memodifikasi 320 x 240. Hanya menggunakan ret = cap.set(3,320) dan ret = cap.set(4,240).

Playing Video dari file
Ini sama seperti menangkap dari kamera, hanya merubahan kamera indeks dengan nama video file. Juga saat menampilkan frame, gunakan waktu yang tepat untuk cv2.waitKey(). Jika terlalu kurang, video akan sangat cepat dan jika itu terlalu tinggi, video akan lambat (Well, bagaimana cara anda bisa menampilkan video slow motion). 25 milidetik akan menjadi OK dalam kasus normal. Disini kita akan memutar video Megamind sebelum itu anda bias download videonya DISINI.
import numpy as np
import cv2
cap = cv2.VideoCapture('Megamind.avi')
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()

Menyimpan Video
Jadi kita menangkap video, memproses frame-by frame dan kita ingin menyimpan video tersebut. Untuk gambar, sangat sederhana, hanya menggunakan cv2.imwrite(). Di sini sedikit lebih banyak code yang diperlukan.
Kali ini kita membuat sebuah objek VideoWriter. Kita harus menetapkan nama file output (misalnya: output.avi). Kemudian kita harus menentukan kode FourCC. Jumlah bingkai per detik (fps) dan ukuran bingkai harus diteruskan. Dan terakhir adalah isColor flag. Jika true, encoder mengharapkan color frame, sebaliknya itu bisa dengan grayscale frame.
FourCC adalah kode 4-byte yang digunakan untuk menentukan video codec. Daftar kode yang tersedia dapat ditemukan di fourcc.org. Itu adalah tergantung platform. Mengikuti codec bekerja baik bagi saya.
·         Di Fedora: DIVX, XVID, MJPG, X 264, WMV1, WMV2. (XVID lebih disukai. MJPG hasil dalam ukuran tinggi video. X 264 memberikan sangat kecil ukuran video)
·         Dalam Windows: DIVX (More to be tested and added)
·         Dalam OSX: (saya tidak memiliki akses ke OSX. Dapat beberapa satu mengisi ini?)
FourCC kode dikirimkan sebagai cv2. VideoWriter_fourcc('M','J','P','G') atau cv2.VideoWriter_fourcc(*'MJPG) untuk MJPG.
Kita bisa melakukan flip atau mengambil frame dalam bentuk yang berbeda. Kita bisa mengatur atau memutar arah sesuai keinginan kita.
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
 fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
while(cap.isOpened()):
ret, frame = cap.read()
 if ret==True:
frame = cv2.flip(frame,1)
# write the flipped frame
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

Gambar diatas merupakan output saat kita mengambil video kemudian kita bisa menekan tombol q dan video nantinya akan disimpan di directory. Kita bisa lihat hasilnya seperti dibawah ini.
Jadi dengan berakhirnya bahasan kita maka berakhir pula post kali ini, mohon maaf jika gambar yang ditampilkan sedikit membuat anda tercengang hahahaha. Oke ditunggu artikel selanjutnya.
Memulai Video dengan OpenCV-Python Memulai Video dengan OpenCV-Python Reviewed by Jimmy Pujoseno on March 13, 2018 Rating: 5

1 comment:

Recent Post

Powered by Blogger.