Pertama, mari kita instal OpenCV:
pip3 instal opencv-pythonBaca dan Tampilkan Gambar
Hal pertama yang perlu kita pelajari adalah membaca dan menulis gambar. Membaca file gambar, memasukkan path lengkap ke file atau nama file (jika file ada di folder python), dan menambahkan flag dilakukan menggunakan cv2.imread(). Bendera dapat mengambil nilai 1 (untuk gambar berwarna), 0 (untuk skala abu-abu), atau -1 (untuk gambar berwarna dengan saluran). Seseorang dapat menggunakan cv2.imshow() berfungsi untuk menampilkan gambar; di sini, dua argumen dilewatkan - nama untuk gambar dan gambar yang akan ditampilkan. Selanjutnya, kita menggunakan cv2.waitKey() berfungsi untuk menunggu input keyboard; 0 untuk cv2.fungsi waitKey(0) menyiratkan waktu tunggu permanen. Di sisi lain, cv2.fungsi destroyAllWindows() akan menutup jendela.
Ini akan membaca dan membuka gambar, dan membiarkan gambar tetap terbuka sampai Anda menutupnya:
impor cv2gambar = cv2.imread('LinuxLogo.jpg', 1)
cv2.imshow('gambar', gambar)
cv2.tungguKunci(0)
cv2.hancurkan SemuaWindows()
Tulis Gambar
Kami menggunakan cv2.imwrite() berfungsi untuk menyimpan gambar. Fungsi ini membutuhkan dua parameter - nama untuk menyimpan gambar dan gambar yang ingin Anda simpan.
impor cv2gambar = cv2.imread('mengidentifikasi.jpg', -1)
cv2.imwrite('simpan_gambar.png', gambar)
Rekam Video dari Webcam
Untuk merekam video, kita mulai dengan menginisialisasi cv2.Fungsi VideoCapture(). Kami kemudian menggunakan loop "sementara" untuk terus merekam video. Saat pengguna tidak menekan tombol keluar, kita dapat membaca frame dan menampilkannya menggunakan read() dan cv2.imshow() fungsi. Kami kemudian memasukkan kunci "break" untuk keluar dari loop; dalam hal ini, angka 27 adalah kunci ESC. Jika pengguna menekan tombol ESC, mereka keluar dari loop. Setelah keluar dari lingkaran, perlu untuk melepaskan tangkapan.
impor numpy sebagai npimpor cv2
tangkap = cv2.Tangkapan Video(0)
sementara (Benar):
ret, bingkai = tangkap.Baca()
cv2.imshow('bingkai', bingkai)
jika cv2.waitKey(1) & 0xFF == 27:
istirahat
menangkap.melepaskan()
cv2.hancurkanSemuaWindows()
Memutar File Video
Memutar file video seperti merekam video dari webcam. Untuk melakukan ini, cv2.Fungsi VideoCapture() digunakan; nama file video yang ingin Anda putar kemudian ditambahkan ke fungsi. Loop "sementara" digunakan lagi, dan tombol keluar, dalam hal ini, adalah tombol "s" pada keyboard. Ini akan membuka dan memutar file video dan menutupnya ketika pengguna menekan tombol āsā.
impor numpy sebagai npimpor cv2
tangkap = cv2.VideoCapture("Megamind.avi")
sementara (Benar):
ret, bingkai = tangkap.Baca()
cv2.imshow('bingkai', bingkai)
jika cv2.waitKey(1) & 0xFF == ord("s"):
istirahat
menangkap.melepaskan()
cv2.hancurkanSemuaWindows()
Menyimpan File Video
Menyimpan file video membutuhkan sedikit lebih banyak pekerjaan. cv2.Fungsi VideoWriter() mengambil total 4 parameter - nama file output, kode FourCC, jumlah frame per detik, dan ukuran frame. Selanjutnya, seseorang harus menentukan kode FourCC, yang merupakan codec video menggunakan cv2.Fungsi VideoWriter_fourcc(). Menggunakan tangkapan.isOpened(), kita membaca frame dan menulis output frame. Kami juga dapat menampilkan bingkai menggunakan cv2.imshow() fungsi. Kemudian, kami menggunakan cv2.waitKey(1) & 0xFF == ord('s') untuk menyetel kunci keluar. Dalam hal ini, jika pengguna menekan tombol "s", mereka akan keluar dari loop dan kemudian melepaskan tangkapan dan output dan menutup jendela.
impor numpy sebagai npimpor cv2
tangkap = cv2.Tangkapan Video(0)
empatcc = cv2.VideoWriter_fourcc(*'XVID')
keluaran = cv2.Penulis Video('keluaran.avi',fourcc, 30.0, (640.480))
sementara (menangkap.dibuka()):
ret, bingkai = tangkap.Baca()
keluaran.menulis (bingkai)
cv2.imshow('bingkai',bingkai)
jika cv2.waitKey(1) & 0xFF == ord('s'):
istirahat
menangkap.melepaskan()
keluaran.melepaskan()
cv2.hancurkan SemuaWindows()
Menggambar Garis, Lingkaran, Persegi Panjang, dan Teks
Hal pertama yang akan kita pelajari untuk menggambar adalah garis. Untuk menggambar garis, kita cukup menggunakan cv2.baris() fungsi. Fungsi ini mengambil 5 argumen - video sumber, titik awal, titik akhir, warna, dan ketebalan garis. Dalam kasus berikut, kami telah memutuskan untuk menggambar perbatasan persegi panjang (terdiri dari 4 garis):
impor cv2tangkap = cv2.VideoCapture('vtest.avi')
sementara Benar:
ret, bingkai = tangkap.Baca()
lebar = int(tangkap.dapatkan(3))
tinggi = int(tangkap.dapatkan(4))
baris1 = cv2.garis(bingkai, (0,0), (0,tinggi), (255, 255, 255),10)
baris2 = cv2.baris(baris1, (0, 0), (lebar,0),(255, 255, 255), 10)
baris3 = cv2.baris(baris2, (0,tinggi), (lebar, tinggi), (255, 255, 255), 10)
baris4 = cv2.baris(baris3, (lebar, 0), (lebar, tinggi), (255, 255, 255), 10)
cv2.imshow('bingkai', baris4)
jika cv2.waitKey(40) == ord('q'):
istirahat
menangkap.melepaskan()
cv2.hancurkanSemuaWindows()
Selanjutnya, kita akan menggambar lingkaran dan persegi panjang di video. Untuk menggambar persegi panjang, kami menggunakan cv2.persegi panjang() fungsi, yang mengambil 5 argumen seperti garis. Untuk menggambar lingkaran, kami menggunakan fungsi cv2.circle(), yang juga membutuhkan 5 argumen - video sumber, titik pusat, jari-jari, warna, dan ketebalan.
impor cv2tangkap = cv2.VideoCapture('vtest.avi')
sementara Benar:
ret, bingkai = tangkap.Baca()
lebar = int(tangkap.dapatkan(3))
tinggi = int(tangkap.dapatkan(4))
persegi panjang = cv2.persegi panjang(bingkai, (150, 15), (650, 550), (0,0,0), 11)
cv2.lingkaran(persegi panjang, (250, 250), 60, (0,0,0), 11)
cv2.imshow('bingkai', bingkai)
jika cv2.waitKey(40) == ord('q'):
istirahat
menangkap.melepaskan()
cv2.hancurkanSemuaWindows()
Sekarang, mari tambahkan beberapa teks ke video yang kita miliki. Untuk melakukan ini, kita perlu menentukan font; di sini, kami memilih cv2.FONT_HERSHEY_SIMPLEX. Setelah font dipilih, kita dapat menggunakan fungsi cv2.putText() untuk melakukan sisanya. CV2.putText() mengambil 8 argumen - video sumber, teks yang ingin Anda tulis, posisi yang Anda inginkan, font, perbesaran, warna, ketebalan, dan cv2.LINE_AA (yang membuat segalanya terlihat lebih baik).
impor cv2tangkap = cv2.VideoCapture('vtest.avi')
sementara Benar:
ret, bingkai = tangkap.Baca()
lebar = int(tangkap.dapatkan(3))
tinggi = int(tangkap.dapatkan(4))
font = cv2.FONT_HERSHEY_SIMPLEX
gambar = cv2.putText(bingkai, "VTEST.AVI", (200, 200), font, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow('bingkai', gambar)
jika cv2.waitKey(40) == ord('q'):
istirahat
menangkap.melepaskan()
cv2.hancurkanSemuaWindows()
OpenCV mampu melakukan banyak hal hebat di mana seseorang harus memulai di suatu tempat. Bisa jadi belajar membuat dan menyimpan gambar dan video. Dalam tutorial ini, kami belajar melakukan dasar-dasar visi komputer.
Selamat Coding!