Anda di halaman 1dari 4

Memanggil Video dan Camera

Menggunakan OpenCV Python


Maret 15, 2018 Oleh ivanj
Download Source Code

Memulai dengan Video


Tujuan
 Belajar membaca video, menampilkan video dan menyimpan video.
 Belajaruntuk mengambil dari Kamera dan menampilkannya.
 Anda akan mempelajari fungsi ini: cv2.VideoCapture () , cv2.VideoWriter ()

Capture Video dari Kamera


Seringkali, kita harus menangkap live streaming dengan kamera. OpenCV menyediakan
antarmuka yang sangat sederhana untuk hal seperti ini. Mari coba ambil video dari
kamera (saya menggunakan webcam laptop saya), saya akan mengubah menjadi video
grayscale dan tampilkan.

Untuk menangkap video, Anda perlu membuat objek VideoCapture . Argumennya bisa


berupa indeks perangkat atau nama file video. Indeks perangkat hanyalah nomor untuk
menentukan kamera mana. Biasanya satu kamera akan terhubung (seperti dalam kasus
saya). Jadi saya hanya lulus 0 (atau -1). Anda bisa memilih kamera kedua dengan
melewati 1 dan seterusnya. Setelah itu, Anda bisa menangkap frame-by-frame. Tapi pada
akhirnya, jangan lupa melepaskan tangkapannya.
1 import numpy as np
2 import cv2
3
4 cap = cv2.VideoCapture(0)
5
6 while(True):
7     # Capture frame-by-frame
8     ret, frame = cap.read()
9
10     # Our operations on the frame come here
11     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
12
13     # Display the resulting frame
14     cv2.imshow('frame',gray)
15     if cv2.waitKey(1) & 0xFF == ord('q'):
16         break
17
18 # When everything done, release the capture
19 cap.release()
20 cv2.destroyAllWindows()
cap.read() mengembalikan bool (True / False). Jika frame dibaca dengan benar, maka
itu benar. Jadi Anda bisa mengecek akhir video dengan memeriksa nilai pengembalian
ini.

Terkadang, cap mungkin tidak menginisiasi penangkapan. Dalam hal ini, kode ini


menunjukkan error. Anda dapat memeriksa apakah itu diinisialisasi atau tidak dengan
metode cap.isOpened () . Jika itu Benar, oke. Jika tidak buka dengan
menggunakan cap.open () .
Anda juga dapat mengakses beberapa fitur dari video ini dengan menggunakan
metode cap.get (propId) di mana propId adalah angka dari 0 sampai 18. Setiap nomor
menunjukkan properti video (jika sesuai dengan video itu) dan rincian lengkap dapat lihat
disini: Property Identifier . Beberapa nilai ini dapat dimodifikasi dengan
menggunakan cap.set (propId, value) . Nilai adalah nilai baru yang Anda inginkan.
Sebagai contoh, saya bisa mengecek lebar dan tinggi frame
dengan cap.get(3) dan cap.get(4) . Ini memberi saya 640×480 secara default. Tapi
saya ingin mengubahnya menjadi 320×240. Cukup
gunakan ret = cap.set(3,320) dan ret = cap.set(4,240) .
Memutar Video dari file
Sama seperti menangkap dari Camera, cukup ganti indeks kamera dengan nama file
video. Juga saat menampilkan frame, gunakan waktu yang tepat
untuk cv2.waitKey() . Jika terlalu sedikit, video akan sangat cepat dan jika terlalu
tinggi, video akan menjadi lambat (Nah, begitulah cara Anda bisa menampilkan video
dalam gerakan lambat). 25 mili detik akan baik-baik saja dalam kasus normal.

1 import numpy as np
2 import cv2
3
4 cap = cv2.VideoCapture('vtest.avi')
5
6 while(cap.isOpened()):
7     ret, frame = cap.read()
8
9     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
10
11     cv2.imshow('frame',gray)
12     if cv2.waitKey(1) & 0xFF == ord('q'):
13         break
14
15 cap.release()
16 cv2.destroyAllWindows()

Menyimpan Video
Jadi kita ambil video, proses frame-by-frame dan kita ingin menyimpan video itu. Untuk
gambar, sangat sederhana, cukup gunakan cv2.imwrite() . Di sini diperlukan sedikit
lebih banyak pekerjaan.
Kali ini kita membuat objek VideoWriter . Kita harus menentukan nama file output
(misal: output.avi). Kemudian kita harus menentukan kode FourCC (rincian pada
paragraf berikutnya). Kemudian jumlah frame per detik (fps) dan ukuran frame harus
dilalui. Dan yang terakhir adalah bendera isColor . Jika Benar, encoder mengharapkan
bingkai warna, jika tidak, ini bekerja dengan bingkai grayscale.

FourCC adalah kode 4 byte yang digunakan untuk menentukan codec video. Daftar kode
yang tersedia dapat ditemukan di fourcc.org . Ini tergantung pada platform. Mengikuti
codec bekerja dengan baik untuk saya.
 Di Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID lebih disukai
MJpG menghasilkan video ukuran tinggi X264 memberikan ukuran video yang
sangat kecil)
 Di Windows: DIVX (Lebih untuk diuji dan ditambahkan)
 Di OSX: (Saya tidak punya akses ke OSX. Ada yang bisa mengisinya?)
Kode FourCC dilewatkan
sebagai cv2.VideoWriter_fourcc('M','J','P','G') atau cv2.VideoWriter_fourcc(
*'MJPG) untuk MJPG.
Di bawah kode menangkap dari kamera, flip setiap frame dalam arah vertikal dan
menyimpannya.

1 import numpy as np
2 import cv2
3
4 cap = cv2.VideoCapture(0)
5
6 # Define the codec and create VideoWriter object
7 fourcc = cv2.VideoWriter_fourcc(*'XVID')
8 out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
9
10 while(cap.isOpened()):
11     ret, frame = cap.read()
12     if ret==True:
13         frame = cv2.flip(frame,0)
14
15         # write the flipped frame
16         out.write(frame)
17
18         cv2.imshow('frame',frame)
19         if cv2.waitKey(1) & 0xFF == ord('q'):
20             break
21     else:
22         break
23
24 # Release everything if job is finished
25 cap.release()
26 out.release()
27 cv2.destroyAllWindows()
 
KategoriOpenCV PythonNavigasi Tulisan
Fungsi Mouse Callback pada OpenCV Python
Trackbar Sebagai Palette Warna

Anda mungkin juga menyukai