opencv

Visi Komputer Dasar-dasarnya

Visi Komputer Dasar-dasarnya
Opencv (Open Source Computer Vision Library) adalah modul Python yang digunakan untuk visi komputer. OpenCV adalah modul sumber terbuka gratis yang berisi ratusan algoritme untuk melakukan berbagai tugas. Apa pun mulai dari pengenalan wajah hingga deteksi gerakan dapat dilakukan menggunakan OpenCV. Namun, dalam panduan ini, kita akan melihat dasar-dasar OpenCV.

Pertama, mari kita instal OpenCV:

pip3 instal opencv-python

Baca 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 cv2
gambar = 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 cv2
gambar = 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 np
impor 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 np
impor 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 np
impor 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 cv2
tangkap = 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 cv2
tangkap = 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 cv2
tangkap = 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!

Cara mengubah penunjuk Mouse dan ukuran kursor, warna & skema pada Windows 10
Penunjuk mouse dan kursor di Windows 10 adalah aspek yang sangat penting dari sistem operasi. Ini dapat dikatakan untuk sistem operasi lain juga, jadi...
Mesin Game Gratis dan Sumber Terbuka untuk Mengembangkan Game Linux
Artikel ini akan membahas daftar mesin game sumber terbuka dan gratis yang dapat digunakan untuk mengembangkan game 2D dan 3D di Linux. Ada banyak mes...
Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah tambahan kedua belas untuk seri Tomb Raider - waralaba game aksi-petualangan yang dibuat oleh Eidos Montreal. Permain...