Isi kandungan:
- Bekalan
- Langkah 1: Fungsi FaceDetect
- Langkah 2: Fungsi BackgroundRemove
- Langkah 3: Fungsi VideoEdges
- Langkah 4: Fungsi VideoBlur
- Langkah 5: Penambahbaikan
Video: Projek Asas OpenCV: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Dalam projek ini, kami meneroka beberapa fungsi asas OpenCV melalui 4 projek mudah yang melibatkan aliran video langsung. Ini adalah pengecaman wajah, penghapusan latar belakang, penampilan visual khas dari tepi, dan menerapkan kesan kabur pada aliran video langsung. Tujuan utama saya untuk mencuba projek-projek ini adalah agar kaki saya basah dengan antara muka OpenCV, kerana saya merancang untuk menyelami bidang penglihatan komputer dengan lebih mendalam
Bekalan
- Komputer yang menjalankan Python
- Buka perpustakaan CV, perpustakaan Numpy, perpustakaan tkinter, perpustakaan sys
- Kamera untuk disambungkan ke komputer (jika komputer belum termasuk)
- Fail python program (termasuk dalam arahan ini)
- fail haarcascade xml (termasuk dalam arahan ini)
Langkah 1: Fungsi FaceDetect
Fungsi ini menunjukkan video kamera anda dengan kotak hijau pada wajah yang diambilnya. Dalam kod, kami menggunakan fungsi cv2. VideoCapture () untuk menyimpan video yang kami tangkap dalam objek bernama "capture". CAPTURE_INDEX adalah nombor yang ditetapkan oleh komputer anda yang sesuai dengan indeks kamera anda dalam senarai input video komputer. Sekiranya anda tidak mempunyai kamera luaran yang disambungkan ke komputer anda, 0 atau 1 harus berfungsi.
Objek face_cascade diinisialisasi menggunakan fungsi cascadeClassifier dan fail "haarcascade_frontalface_default.xml" yang terdapat di github OpenCV. Kami menggunakan objek ini untuk menyimpan wajah yang dikesan dalam senarai "wajah" sebagai entri empat arah-tuple yang memegang koordinat wajah x, koordinat y, lebar dan tinggi. Kami kemudian melukis segi empat tepat yang menutup wajah dengan menggunakan fungsi cv2.rectangle
Dari video ini, OpenCV menangkap banyak gambar dalam loop sementara kami menggunakan capture.read () dan menyimpan gambar dalam bingkai yang kami namakan "img". Setiap gambar kemudian ditafsirkan dan diubah mengikut kehendak kita. Untuk faceDetect, kami menjadikan gambar menjadi kelabu menggunakan fungsi cvtColor yang mengubah gambar apa pun yang diberikan pada parameter pertama menjadi jenis warna gambar tertentu yang ditentukan dalam parameter kedua. Senarai nilai yang boleh diterima untuk parameter kedua boleh didapati dalam talian. Kami kemudian menampilkan gambar di jendela bernama "Mendeteksi wajah" menggunakan fungsi imshow () yang mengambil string untuk nama jendela dan bingkai gambar yang akan ditampilkan.
Akhirnya kami menunggu pengguna memasukkan kekunci q menggunakan fungsi cv2.waitKey (). Topeng 0xFF digunakan sebagai konvensyen untuk komputer 64 bit. Setelah pengguna menamatkan aliran video, fungsi faceDetect membebaskan objek penangkapan kemudian memusnahkan tetingkap lain yang dibuka di bawah antara muka OpenCV. Semua fungsi lain mengikuti struktur reka bentuk yang serupa.
Langkah 2: Fungsi BackgroundRemove
Fungsi ini cuba membuang bahagian latar video kami dan hanya meninggalkan gambar latar depan. Mungkin tidak berfungsi pada beberapa kamera, karena mereka menggunakan fungsi penyesuaian pencahayaan yang diaktifkan ketika objek / fokus yang berbeda memasuki bingkai. Sekiranya fungsi BackgroundRemove anda tidak berfungsi, jangan khuatir - ini mungkin hanya kamera anda!
Untuk menggunakan fungsi ini, jauhkan dari bingkai kamera dan tekan kekunci "d" untuk menangkap gambar latar. Penting untuk tidak ada objek bergerak di latar belakang yang ingin anda tangkap. Kemudian, kita dapat melangkah kembali ke bingkai kamera. Sekiranya fungsi berfungsi, pengguna hanya akan melihat diri mereka di aliran video fungsi. Sebarang bunyi / gumpalan hitam pada gambar latar depan mungkin disebabkan oleh penyesuaian pencahayaan kamera. Untuk menangkap latar belakang yang lain, tekan kekunci "r" untuk memulakan semula, kemudian tekan "d" sekali lagi.
Beberapa langkah utama untuk fungsi ini adalah penggunaan boolean "flag" yang dinaikkan sebaik sahaja pengguna menekan butang d. Ini menangkap latar belakang dan membolehkan kita mengeluarkannya dari video yang disiarkan oleh fungsi. Kami bertujuan untuk menyimpan gambar latar dalam ref_img sehingga kami dapat membezakannya dari gambar latar depan, yang menangkap objek bergerak. Kami menggunakan fungsi cv2.subtract () untuk mengurangkan gambar permukaan depan dari gambar latar dan sebaliknya, kemudian membatalkan sebarang perbezaan kecil dalam kedua gambar tersebut segera setelahnya. Latar belakang dihitamkan.
Fgmask dibuat menggunakan perbezaan antara kedua gambar ini dan kemudian diterapkan pada aliran video fungsi menggunakan fungsi OpenCV cv2.bitwise_and ().
Langkah 3: Fungsi VideoEdges
Fungsi ini mengembalikan aliran video langsung kami, tetapi bahagian tepi yang dapat dikesan berwarna putih sementara yang lain dihitamkan. Apa yang membezakan fungsi ini dari fungsi lain adalah penukaran video asal kami dari format RBG ke HSV, yang bermaksud warna, tepu dan variasi - kaedah memproses cahaya dan warna yang berbeza dari video. Dengan kaedah ini, kita dapat dengan lebih mudah membezakan garis besar dalam video dengan menggunakan penapis (red_low hingga red_high).
Canny Edge Detection digunakan untuk mengesan tepi dalam gambar. Ia menerima gambar skala kelabu sebagai input dan menggunakan algoritma bertingkat.
Langkah 4: Fungsi VideoBlur
Fungsi ini digunakan untuk menambahkan kesan kabur pada aliran video kami. Fungsi sederhana memanggil fungsi GaussianBlur cv2 pada bingkai kami. Maklumat lebih lanjut mengenai fungsi gaussianBlur boleh didapati di sini:
opencv-python-tutroals.readthedocs.io/en/l…
Langkah 5: Penambahbaikan
Fungsi yang paling sensitif dalam projek ini adalah fungsi penyingkiran latar, kerana memerlukan penggunaan kamera yang tidak mempunyai fungsi penyesuaian pencahayaan. Mungkin ada sekumpulan fungsi yang lebih baik dalam perpustakaan OpenCV yang dapat menjelaskan penyesuaian pencahayaan ini dan menghilangkan latar belakang dengan lancar (serupa dengan layar hijau).
Kami juga dapat menggunakan fungsi pengesanan wajah lain yang dapat menghasilkan objek dengan lebih banyak fungsi selain hanya mengembalikan koordinat (x, y). Mungkin program pengecaman wajah dengan kemampuan mengingat wajah tidak terlalu sukar untuk dilaksanakan.
Fungsi kabur dapat dibuat lebih banyak penyesuaian melalui kawalan intuitif oleh pengguna. Sebagai contoh, pengguna mungkin mahu menyesuaikan intensiti kesan kabur atau memilih kawasan tertentu dalam bingkai untuk kabur.
Disyorkan:
Komputer ASAS Genggam: 6 Langkah (dengan Gambar)
Komputer BASIC Genggam: Instructable ini menerangkan proses saya membina komputer genggam kecil yang menjalankan BASIC. Komputer dibina di sekitar cip AVR ATmega 1284P, yang juga mengilhami nama bodoh untuk komputer (HAL 1284). Binaan ini diHASILKAN oleh
Cara Membuat RADAR Menggunakan Arduino untuk Projek Sains - Projek Arduino Terbaik: 5 Langkah
Cara Membuat RADAR Menggunakan Arduino untuk Projek Sains | Projek Arduino Terbaik: Hai rakan-rakan, dalam pengajaran ini saya akan menunjukkan kepada anda bagaimana membuat sistem radar yang menakjubkan yang dibina menggunakan arduino nano projek ini sangat sesuai untuk projek sains dan anda boleh membuatnya dengan pelaburan dan peluang yang sangat rendah jika memenangi hadiah adalah bagus untuk
10 Projek Arduino Asas untuk Pemula! Buat sekurang-kurangnya 15 Projek Dengan Papan Tunggal !: 6 Langkah
10 Projek Arduino Asas untuk Pemula! Buat sekurang-kurangnya 15 Projek Dengan Papan Tunggal !: Projek Arduino & Lembaga Tutorial; Termasuk 10 projek asas Arduino. Semua kod sumber, fail Gerber dan banyak lagi. Tiada SMD! Pematerian mudah untuk semua orang. Komponen yang mudah ditanggalkan dan diganti. Anda boleh membuat sekurang-kurangnya 15 projek dengan satu
Pembakar Bertenaga USB! Projek ini Boleh Membakar Melalui Plastik / Kayu / Kertas (Projek yang menyeronokkan Juga Harus Kayu Sangat Baik): 3 Langkah
Pembakar Bertenaga USB! Projek ini Boleh Membakar Melalui Plastik / Kayu / Kertas (Projek yang Menyeronokkan Juga Harus Kayu Sangat Baik): JANGAN JADIKAN MENGGUNAKAN USB INI !!!! saya mendapat tahu bahawa ia boleh merosakkan komputer anda dari semua komen. komputer saya baik-baik saja. Gunakan pengecas telefon 600ma 5v. Saya menggunakan ini dan berfungsi dengan baik dan tidak ada yang boleh rosak jika anda menggunakan palam keselamatan untuk menghentikan kuasa
Asas Yang Sangat Asas dari Laman Web berasaskan Div: 7 Langkah
Asas Yang Sangat Asas dari Laman web yang berasaskan Div: Arahan ini akan menunjukkan kepada anda asas bagaimana membina laman web dengan div. Kerana jadual yang digunakan untuk susun atur adalah jahat !: pUntuk memahami arahan ini, anda perlu mengetahui html dan css asas. Sekiranya anda tidak memahami sesuatu, sila