Daftar Isi:

Deteksi Warna Sederhana Menggunakan OpenCV: 6 Langkah
Deteksi Warna Sederhana Menggunakan OpenCV: 6 Langkah

Video: Deteksi Warna Sederhana Menggunakan OpenCV: 6 Langkah

Video: Deteksi Warna Sederhana Menggunakan OpenCV: 6 Langkah
Video: (Shape Detection) Deteksi Bentuk Menggunakan OpenCV RealTime | TUTORIAL OPENCV BAHASA INDONESIA 2024, November
Anonim
Deteksi Warna Sederhana Menggunakan OpenCV
Deteksi Warna Sederhana Menggunakan OpenCV

Hai! Hari ini saya akan menunjukkan metode sederhana untuk mendeteksi warna dari video langsung menggunakan OpenCV dan python.

Pada dasarnya saya hanya akan menguji warna yang diperlukan ada di bingkai latar belakang atau tidak dan menggunakan modul OpenCV saya akan menutupi wilayah itu dan secara bersamaan menampilkan bingkai.

Langkah 1: File Header

File Header
File Header

Nah disini saya sudah menggunakan dua file header yaitu cv2 dan NumPy. Pada dasarnya cv2 adalah perpustakaan OpenCV yang memuat semua file c++ yang penting saat menggunakan perintah dalam kode (berisi semua definisi).

Dan Numpy adalah pustaka python yang penting untuk menyimpan array multidimensi. Kami akan menggunakan untuk menyimpan koordinat rentang warna kami.

Dan numpy as np pada dasarnya membantu kode kita untuk mempersingkat sedikit dengan menggunakan np setiap kali alih-alih numpy.

Langkah 2: Menangkap Video

Menangkap Video
Menangkap Video

Ini cukup sederhana saat menggunakan python. Di sini kita hanya perlu menyalakan perekam video agar bisa mulai merekam frame.

Sekarang nilai di dalam VideoCapture menunjukkan kamera, dalam kasus saya kamera terhubung ke laptop saya, jadi 0.

Anda dapat menggunakan cara yang sama dengan 1 untuk kamera sekunder dan seterusnya. VideoCapture membuat objek untuk itu.

Langkah 3: Menangkap Bingkai dan Menentukan Warna

Menangkap Bingkai dan Menentukan Warna
Menangkap Bingkai dan Menentukan Warna

Sekarang di sini kita harus melakukan sesuatu sehingga kita dapat menangkap bingkai instan dari video yang akan membantu kita mengekstrak gambar dan kita dapat mengerjakannya sesuai kebutuhan.

Loop "while" akan membantu kita menjalankan loop ke waktu yang dibutuhkan. Sekarang " _, frame = cap.read() " digunakan untuk memeriksa validitas Frame yang diambil dan menyimpannya. "cap.read() adalah variabel boolean dan mengembalikan nilai true jika frame dibaca dengan benar dan jika Anda tidak mendapatkan frame, itu tidak akan menampilkan kesalahan apa pun, Anda hanya akan mendapatkan None.

Sekarang baris 11 dan baris 12 pada dasarnya menentukan rentang warna yang perlu kita deteksi. Untuk ini, saya telah menggunakan warna biru.

Anda dapat melanjutkan dengan warna apa pun untuk itu Anda hanya perlu mengetikkan nilai BGR untuk warna tertentu. Lebih baik mendefinisikan dua array menggunakan array numpy karena mendeteksi warna tertentu di dunia nyata tidak akan sesuai dengan tujuan kita, melainkan kita akan mendefinisikan rentang warna biru sehingga mendeteksi dalam rentang tersebut.

Untuk ini, saya telah mendefinisikan dua variabel yang menyimpan nilai BGR bawah dan nilai BGR atas.

Langkah 4: Masking dan Ekstraksi

Masking dan Ekstraksi
Masking dan Ekstraksi

Sekarang inilah tugas utama menutupi bingkai dan mengekstrak warna bingkai. Saya menggunakan perintah yang telah ditentukan yang ada di perpustakaan di OpenCV untuk melakukan masking. Pada dasarnya masking adalah proses menghilangkan beberapa bagian dari frame, yaitu kita akan menghapus piksel yang nilai BGR warnanya tidak terletak pada rentang warna yang ditentukan dan ini dilakukan oleh cv2.inRange. Setelah itu, kami menerapkan rentang warna ke gambar bertopeng tergantung pada nilai piksel dan untuk ini, kami akan menggunakan cv2.bitwise_and, Ini hanya akan menetapkan warna ke wilayah bertopeng tergantung pada nilai topeng dan rentang warna.

Tautan untuk cv2. bitwise_and:

Langkah 5: Akhirnya Menampilkan

Akhirnya Ditampilkan!
Akhirnya Ditampilkan!

Di sini saya telah menggunakan cv2.imshow() dasar untuk menampilkan setiap frame sebagai gambar. Karena saya memiliki data bingkai yang disimpan dalam variabel, saya dapat mengambilnya di imshow(). Di sini saya telah menampilkan ketiga bingkai, asli, bertopeng, dan berwarna.

Sekarang kita harus keluar dari loop while. Untuk ini, kita cukup mengimplementasikan cv2.wait. Key(). Pada dasarnya ini memberi tahu waktu tunggu sebelum merespons. Jadi jika Anda melewati 0 itu akan menunggu tanpa batas dan 0xFF memberi tahu arsitekturnya adalah 64bit. " ord() " menentukan karakter yang ketika ditekan akan mengeksekusi perintah break di blok if dan akan keluar dari loop.

Kemudian cap.release() menutup perekam video dan cv2.destroyAllWindows() menutup semua jendela yang terbuka.

Jika Anda memiliki masalah, beri tahu saya.

Tautan ke kode sumber:

Direkomendasikan: