Isi kandungan:

Pengesanan Warna Ringkas Menggunakan OpenCV: 6 Langkah
Pengesanan Warna Ringkas Menggunakan OpenCV: 6 Langkah

Video: Pengesanan Warna Ringkas Menggunakan OpenCV: 6 Langkah

Video: Pengesanan Warna Ringkas Menggunakan OpenCV: 6 Langkah
Video: Leap Motion SDK 2024, Jun
Anonim
Pengesanan Warna Mudah Menggunakan OpenCV
Pengesanan Warna Mudah Menggunakan OpenCV

Hai! Hari ini saya akan menunjukkan kaedah mudah untuk mengesan warna dari video langsung menggunakan OpenCV dan python.

Pada dasarnya saya hanya akan menguji warna yang diperlukan ada pada bingkai latar belakang atau tidak dan menggunakan modul OpenCV saya akan menutupi kawasan itu dan secara serentak memaparkan bingkai.

Langkah 1: Fail Header

Fail Tajuk
Fail Tajuk

Sekarang di sini saya telah menggunakan dua fail header iaitu cv2 dan NumPy. Pada dasarnya cv2 adalah perpustakaan OpenCV yang memuat semua fail c ++ yang penting semasa menggunakan perintah dalam kod (ia mengandungi semua definisi).

Dan Numpy adalah perpustakaan python yang penting untuk menyimpan susunan pelbagai dimensi. Kami akan menggunakan untuk menyimpan koordinat rangkaian warna kami.

Dan numpy kerana np pada asasnya membantu kod kita untuk memendekkan sedikit dengan menggunakan np setiap kali dan bukannya numpy.

Langkah 2: Menangkap Video

Merakam Video
Merakam Video

Ini cukup mudah semasa menggunakan python. Di sini kita hanya perlu menghidupkan perakam video supaya dapat mula merakam bingkai.

Sekarang nilai di dalam VideoCapture menunjukkan kamera, dalam kes saya kamera disambungkan ke komputer riba saya, jadi 0.

Anda boleh pergi ke angka 1 untuk kamera sekunder dan seterusnya. VideoCapture mencipta objek untuknya.

Langkah 3: Menangkap Bingkai dan Menentukan Warna

Menangkap Bingkai dan Menentukan Warna
Menangkap Bingkai dan Menentukan Warna

Sekarang di sini kita harus melakukan sesuatu supaya kita dapat merakam kerangka segera video yang akan membantu kita mengekstrak gambar dan kita dapat mengerjakannya mengikut keperluan.

Gelung "while" akan membantu kita menjalankan loop mengikut masa keperluan kita. Sekarang "_, frame = cap.read ()" digunakan untuk memeriksa kesahan Frame yang ditangkap dan menyimpannya. "cap.read () adalah pemboleh ubah boolean dan kembali benar jika bingkai dibaca dengan betul dan jika anda tidak mendapat bingkai, ia tidak akan menunjukkan sebarang kesalahan, anda akan mendapat Tiada.

Sekarang baris 11 dan baris 12 pada dasarnya menentukan julat warna yang perlu kita mengesan. Untuk ini, saya biasa menggunakan warna biru.

Anda boleh meneruskan warna apa pun untuk itu, anda hanya perlu menaip nilai BGR untuk warna tertentu. Lebih baik mentakrifkan dua tatasusunan menggunakan susunan numpy kerana mengesan warna tertentu di dunia nyata tidak akan memenuhi tujuan kita sebaliknya kita akan menentukan julat warna biru sehingga dapat mengesannya dalam julat.

Untuk ini, saya telah menentukan dua pemboleh ubah yang menyimpan nilai BGR bawah dan nilai BGR atas.

Langkah 4: Melindungi dan Mengekstrak

Melindungi dan Mengekstrak
Melindungi dan Mengekstrak

Sekarang inilah tugas utama untuk menutupi bingkai dan mengekstrak warna bingkai. Saya menggunakan arahan yang telah ditetapkan di perpustakaan di OpenCV untuk melakukan penyamaran. Pada dasarnya penyamaran adalah proses membuang sebahagian bahagian bingkai, iaitu kita akan membuang piksel yang warnanya BGR nilai yang tidak terletak pada julat warna yang ditentukan dan ini dilakukan oleh cv2.inRange. Setelah itu, kami menerapkan rentang warna pada gambar bertopeng bergantung pada nilai piksel dan untuk ini, kami akan menggunakan cv2.bitwise_and, Ia hanya akan menetapkan warna ke kawasan bertopeng bergantung pada nilai topeng dan rentang warna.

Pautan untuk cv2. bitwise_and:

Langkah 5: Akhirnya Dipaparkan

Akhirnya Dipaparkan!
Akhirnya Dipaparkan!

Di sini saya telah menggunakan cv2.imshow asas () untuk memaparkan untuk setiap bingkai sebagai gambar. Oleh kerana saya mempunyai data bingkai yang tersimpan dalam pemboleh ubah, saya dapat mengambilnya dalam imshow (). Di sini saya telah memaparkan ketiga-tiga bingkai, asli, bertopeng, dan berwarna.

Sekarang kita harus keluar dari loop sementara. Untuk ini, kita hanya boleh melaksanakan cv2.wait. Key (). Pada dasarnya ia memberitahu masa menunggu sebelum bertindak balas. Oleh itu, jika anda lulus 0, ia akan menunggu tanpa had dan 0xFF memberitahu bahawa senibina adalah 64bit. "ord ()" menentukan watak yang ketika ditekan akan menjalankan perintah break jika blok dan ia akan keluar dari gelung.

Kemudian cap.release () menutup perakam video dan cv2.destroyAllWindows () menutup semua tetingkap yang dibuka.

Sekiranya anda mempunyai sebarang masalah, beritahu saya.

Pautan ke kod sumber:

Disyorkan: