Daftar Isi:

Proyek Dasar OpenCV: 5 Langkah
Proyek Dasar OpenCV: 5 Langkah

Video: Proyek Dasar OpenCV: 5 Langkah

Video: Proyek Dasar OpenCV: 5 Langkah
Video: BISA DETEKSI OBJEK YOLOV5 DALAM SEKEJAP 2024, November
Anonim
Proyek Dasar OpenCV
Proyek Dasar OpenCV

Dalam proyek ini, kami mengeksplorasi beberapa fungsionalitas dasar OpenCV melalui 4 proyek sederhana yang melibatkan streaming video langsung. Ini adalah pengenalan wajah, penghapusan latar belakang, rendering visual khusus dari tepi, dan menerapkan efek buram ke streaming video langsung. Tujuan utama saya untuk mencoba proyek ini adalah untuk membuat kaki saya basah dengan antarmuka OpenCV, karena saya berencana untuk mempelajari lebih dalam bidang visi komputer

Perlengkapan

  • Komputer yang menjalankan Python
  • Buka perpustakaan CV, perpustakaan Numpy, perpustakaan tkinter, perpustakaan sys
  • Kamera untuk terhubung ke komputer (jika komputer belum menyertakannya)
  • File python program (termasuk dalam instruksi ini)
  • file xml haarcascade (termasuk dalam instruksi ini)

Langkah 1: Fungsi Deteksi Wajah

Fungsi Deteksi Wajah
Fungsi Deteksi Wajah
Fungsi Deteksi Wajah
Fungsi Deteksi Wajah

Fungsi ini menampilkan video kamera Anda dengan kotak hijau di setiap wajah yang diambilnya. Dalam kode tersebut, kita menggunakan fungsi cv2. VideoCapture() untuk menyimpan video yang kita rekam dalam sebuah objek bernama "capture". CAPTURE_INDEX adalah nomor yang ditetapkan oleh komputer Anda yang sesuai dengan indeks kamera Anda dalam daftar input video komputer. Jika Anda tidak memiliki kamera luar yang terhubung ke komputer Anda, 0 atau 1 akan berfungsi.

Objek face_cascade diinisialisasi menggunakan fungsi cascadeClassifier dan file "haarcascade_frontalface_default.xml" ditemukan di github OpenCV. Kami menggunakan objek ini untuk menyimpan wajah yang terdeteksi dalam daftar "wajah" sebagai entri tupel empat arah yang memegang koordinat wajah x, koordinat y, lebar dan tinggi. Kami kemudian menggambar persegi panjang yang menutupi wajah dengan sempurna menggunakan fungsi cv2.rectangle

Dari video ini, OpenCV menangkap banyak gambar di while loop menggunakan capture.read() dan menyimpan gambar dalam bingkai yang kami beri nama "img". Setiap gambar kemudian diinterpretasikan dan dimodifikasi sesuai keinginan. Untuk faceDetect, kami membuat gambar menjadi abu-abu menggunakan fungsi cvtColor yang mengubah gambar apa pun yang diberikan dalam parameter pertama menjadi jenis warna gambar tertentu yang ditentukan dalam parameter kedua. Daftar nilai yang dapat diterima untuk parameter kedua dapat ditemukan secara online. Kami kemudian menampilkan gambar di jendela bernama "Mendeteksi wajah" menggunakan fungsi imshow() yang mengambil string untuk nama jendela dan bingkai gambar yang akan ditampilkan.

Terakhir kita tunggu pengguna memasukkan kunci q menggunakan fungsi cv2.waitKey(). Topeng 0xFF digunakan sebagai konvensi untuk komputer 64 bit. Setelah pengguna mengakhiri streaming video, fungsi faceDetect membebaskan objek tangkapan kemudian menghancurkan jendela lain yang dibuka di bawah antarmuka OpenCV. Semua fungsi lainnya mengikuti struktur desain yang serupa.

Langkah 2: Fungsi Penghapusan Latar Belakang

Fungsi Hapus Latar Belakang
Fungsi Hapus Latar Belakang
Fungsi Hapus Latar Belakang
Fungsi Hapus Latar Belakang

Fungsi ini mencoba untuk menghapus bagian latar belakang dari video kita dan hanya menyisakan gambar latar depan. Ini mungkin tidak bekerja pada beberapa kamera, karena mereka menggunakan fungsi penyesuaian pencahayaan yang diaktifkan ketika objek/fokus yang berbeda memasuki bingkai. Jika fungsi backgroundRemove Anda tidak bekerja, jangan khawatir- itu bisa saja kamera Anda!

Untuk menggunakan fungsi ini, menjauhlah dari bingkai kamera dan tekan tombol "d" untuk mengambil gambar latar belakang. Penting bahwa tidak ada objek bergerak di latar belakang yang ingin Anda tangkap. Kemudian, kita dapat melangkah kembali ke bingkai kamera. Jika fungsi tersebut berfungsi, pengguna hanya akan melihat diri mereka sendiri di aliran video fungsi tersebut. Noise/gumpalan hitam pada gambar latar depan mungkin disebabkan oleh penyesuaian pencahayaan kamera. Untuk mengambil latar belakang lain, tekan tombol "r" untuk menginisialisasi ulang, lalu tekan "d" lagi.

Beberapa kunci take-aways untuk fungsi ini adalah penggunaan boolean "bendera" yang dinaikkan saat pengguna menekan tombol d. Ini menangkap latar belakang dan memungkinkan kami untuk menghapusnya dari video yang dialirkan oleh fungsi tersebut. Kami bertujuan untuk menyimpan gambar latar belakang di ref_img sehingga kami dapat membedakannya dari gambar latar depan, yang menangkap objek bergerak apa pun. Kami menggunakan fungsi cv2.subtract() untuk mengurangi gambar latar depan dari gambar latar belakang dan sebaliknya, kemudian membatalkan perbedaan kecil dalam dua gambar segera setelahnya. Latar belakang dihitamkan.

Fgmask dibuat menggunakan perbedaan antara dua gambar ini dan kemudian diterapkan ke aliran video fungsi menggunakan fungsi OpenCV cv2.bitwise_and().

Langkah 3: Fungsi VideoEdges

Fungsi Tepi Video
Fungsi Tepi Video
Fungsi Tepi Video
Fungsi Tepi Video

Fungsi ini mengembalikan aliran video langsung kami, tetapi tepi yang dapat dideteksi menjadi putih sementara yang lainnya dihitamkan. Yang membedakan fungsi ini dari fungsi lainnya adalah konversi video asli kami dari format RBG ke HSV, yang merupakan singkatan dari hue, saturation, dan variasi- metode yang berbeda untuk memproses cahaya dan warna dari sebuah video. Dengan metode ini, kita bisa lebih mudah membedakan outline dalam video dengan menerapkan filter (red_low to red_high).

Deteksi Tepi Canny digunakan untuk mendeteksi tepi dalam suatu gambar. Ini menerima gambar skala abu-abu sebagai input dan menggunakan algoritma multistage.

Langkah 4: Fungsi VideoBlur

Fungsi VideoBlur
Fungsi VideoBlur
Fungsi VideoBlur
Fungsi VideoBlur

Fungsi ini digunakan untuk menambahkan efek blur pada aliran video kita. Fungsi sederhana memanggil fungsi GaussianBlur cv2 pada frame kita. Informasi lebih lanjut tentang fungsi gaussianBlur dapat ditemukan di sini:

opencv-python-tutroals.readthedocs.io/en/l…

Langkah 5: Peningkatan

Fungsi yang paling sensitif dalam proyek ini adalah fungsi penghilangan latar belakang, karena memerlukan penggunaan kamera yang tidak memiliki fungsi penyesuaian pencahayaan. Mungkin ada serangkaian fungsi yang lebih baik di dalam pustaka OpenCV yang dapat menjelaskan penyesuaian pencahayaan ini dan menghapus latar belakang dengan mulus (mirip dengan layar hijau).

Kami juga dapat memanfaatkan fungsi deteksi wajah lain yang dapat menghasilkan objek dengan lebih banyak fungsi selain hanya mengembalikan koordinat (x, y). Mungkin program pengenalan wajah dengan kemampuan mengingat wajah tidak akan terlalu sulit untuk diterapkan.

Fungsi blur dapat dibuat lebih banyak penyesuaian melalui kontrol intuitif oleh pengguna. Misalnya, pengguna mungkin ingin menyesuaikan intensitas efek buram atau memilih area tertentu di dalam bingkai untuk diburamkan.

Direkomendasikan: