Isi kandungan:

Pengesanan Warna di Python Menggunakan OpenCV: 8 Langkah
Pengesanan Warna di Python Menggunakan OpenCV: 8 Langkah

Video: Pengesanan Warna di Python Menggunakan OpenCV: 8 Langkah

Video: Pengesanan Warna di Python Menggunakan OpenCV: 8 Langkah
Video: Demo Pengolahan Citra - Deteksi warna dan Objek menggunakan OpenCV-Python 2024, November
Anonim
Image
Image

Helo! Instruksional ini digunakan untuk membimbing bagaimana mengekstrak warna tertentu dari gambar di python menggunakan perpustakaan openCV. Sekiranya anda baru menggunakan teknik ini, jangan risau, di akhir panduan ini, anda akan dapat memprogramkan program pengesanan warna anda sendiri.

Berikut adalah fungsinya atau kita boleh mengatakan teknik yang akan anda pelajari, 1. Cara membaca gambar

2. Cara membuat Track Bar

3. Cara menyesuaikan nilai Hue, Saturation dan nilai gambar menggunakan track bar

4. Dan kemudian akan ada hasil akhir anda

Anda boleh menonton video output yang telah saya lampirkan di bawah.

Oleh itu, mari kita mulakan

Bekalan

  • Python 3
  • perpustakaan openCV
  • perpustakaan numpy

Langkah 1: Mengimport Perpustakaan

Mengimport Perpustakaan
Mengimport Perpustakaan

Gambar berwarna ferrari kuning seperti yang ditunjukkan dan kami akan memprogram untuk mengekstrak warna kuning sahaja dari gambar tersebut

Langkah pertama ialah mengimport perpustakaan kami

1. Termasuk perpustakaan openCV. Ia dipanggil cv2 dalam python

2. Termasuk perpustakaan numpy sebagai np. Huruf "as" membolehkan kita menjadi tidak baik seperti np sehingga tidak perlu menulis numpy berulang-ulang kali

Langkah 2: Membuat Jalur Jalur

Membuat Bar Trek
Membuat Bar Trek

Jalur Jalur dibuat untuk menyesuaikan nilai Hue, Ketepuan dan Nilai dalam gambar.

cv2.namedWindow ("TrackBars") Baris kod ini digunakan untuk membuat tetingkap keluaran baru dan nama tetingkap diberikan sebagai TrackBars (Anda dapat memberikan nama yang anda inginkan)

cv2.resizeWindow ("TrackBars", 600, 250) Fungsi ini digunakan untuk mengubah saiz tetingkap. "TrackBars" adalah tetingkap yang anda mahu ubah saiznya kerana saya mahu mengubah saiz tetingkap TrackBars yang saya tuliskan nama itu. Diikuti oleh dua bilangan bulat. Dua bilangan bulat itu adalah lebar dan tinggi. Anda boleh bermain-main dengan dua nombor tersebut untuk menukar ukuran

Langkah 3: Membuat TrackBars untuk Warna, Ketepuan dan Nilai

Membuat TrackBars untuk Warna, Ketepuan dan Nilai
Membuat TrackBars untuk Warna, Ketepuan dan Nilai
Membuat TrackBars untuk Warna, Ketepuan dan Nilai
Membuat TrackBars untuk Warna, Ketepuan dan Nilai

Sekarang kita akan membuat 6 TrackBar untuk Hue, Saturation dan nilai. Masing-masing mempunyai dua iaitu 1 untuk minimum dan 1 untuk maksimum. Kami akan menggunakan fungsi createTrackbar openCV. Pertama kita akan melihat sintaks fungsi ini.

cv2.createTrackbar ("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Ini mungkin membingungkan tetapi jangan bimbang kita akan melalui setiap langkah. Perlu diingat bahawa nilai openCV rona adalah 179, tepu 255 dan nilainya 255

1. Membuat TrackBar untuk hue min:

cv2.createTrackbar ("Hue min", "TrackBars", 0, 179, kosong)

Dalam Hue min ini adalah nama trackbar, TrackBars adalah tetingkap utama, 0 adalah posisi di mana slider kami berada dan 179 adalah julat yang bermaksud silder akan bergerak dari 0-179

2. Membuat TrackBar untuk hue max:

cv2.createTrackbar ("Hue max", "TrackBars", 179, 179, kosong)

Dalam Hue max ini adalah nama trackbar, TrackBars adalah tetingkap utama, 179 adalah posisi di mana slider kami akan berada dan 179 adalah julat maksimum yang bermaksud silder akan bergerak dari 179-0

3. Demikian juga ulangi langkah untuk sat min, sat max, val min dan val max seperti yang ditunjukkan dalam gambar

Gambar dengan latar belakang putih adalah gambar output. Ini adalah bagaimana bar trek anda akan kelihatan

Langkah 4: Cara Membaca dan Mengubah saiz Imej

Cara Membaca dan Mengubah Ukuran Imej
Cara Membaca dan Mengubah Ukuran Imej

cv2.imread () membolehkan anda membaca gambar. Satu yang penting anda perlu ingat bahawa lokasi gambar anda mesti berada di folder yang sama di mana program disimpan. Kami akan memasukkan loop sementara kerana ia harus berjalan sehingga membaca gambar atau kita boleh mengatakan sehingga keadaannya benar

img = cv2.imread ("ferrari.jpg")

  • Dalam ini saya telah membuat nama pemboleh ubah "img" di mana saya menyimpan gambar
  • Di dalam cv2.imread tuliskan nama gambar dengan lanjutannya dalam petikan berganda

Untuk mengubah saiz gambar kita akan menggunakan fungsi cv2.resize. Bahagian ini adalah pilihan, jika anda mahu mengubah saiznya maka anda boleh menggunakan fungsi ini

Di dalam cv2. ukuran terlebih dahulu tuliskan nama pemboleh ubah di mana gambar disimpan dan kemudian lebar dan tinggi

Langkah 5: Membaca Nilai Bar Jejak untuk Menerapkannya pada Gambar

Membaca Nilai Bar Jejak untuk Menerapkannya pada Gambar
Membaca Nilai Bar Jejak untuk Menerapkannya pada Gambar
Membaca Nilai Bar Jejak untuk Menerapkannya pada Gambar
Membaca Nilai Bar Jejak untuk Menerapkannya pada Gambar

Baiklah sekarang kita akan membaca nilai bar bar supaya kita dapat menerapkannya pada gambar kita. Kami akan mendapat nilai menggunakan fungsi cv2.getTrackbarPos ().

Mari mulakan dengan bahagian itu …

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

Dalam pernyataan di atas saya membuat nama pemboleh ubah h_min di mana saya akan menyimpan nilai Hue min. Jadi di dalam argumen 1st cv2.getTrackbarPos adalah "Hue min" kerana saya mahukan nilai hue min (Ejaannya harus sama persis seperti fungsi createTrackbar) dan argumen ke-2 akan menjadi nama tetingkap bar trek yang menjadi miliknya.

  • Ulangi proses yang sama untuk h_max dan sisa fungsi seperti yang ditunjukkan pada gambar di atas dan kemudian cetak semua nilai menggunakan cetak ()
  • Keluaran ditunjukkan pada gambar kedua. Ia mencetak nilai h_min, h_max, s_min, s_max, v_min, s_max

Langkah 6: Memaparkan Gambar dan Menetapkan Had Atas dan Bawah

Memaparkan Gambar dan Menetapkan Had Atas dan Bawah
Memaparkan Gambar dan Menetapkan Had Atas dan Bawah

Sekarang kita mempunyai nilai rona, saturasi dan nilai min dan maksimum, kita akan menggunakan nilai ini untuk menyaring gambar sehingga kita dapat menghasilkan warna tertentu dari gambar.

Kami akan membuat topeng untuk ini menggunakan fungsi cv2.inRange. Dan sebelum itu kita akan menetapkan had rona, ketepuan dan nilai atas dan bawah

Oleh itu, buat nama pemboleh ubah "lebih rendah" dan gunakan fungsi susunan numpy tetapkan julat min untuk ketiga-tiga seperti berikut

lebih rendah = np.array ([h_min, s_min, v_min])

Ulangi langkah yang sama untuk bahagian atas

atas = np.array ([h_max, s_max, v_max])

Sekarang kita akan membuat topeng seperti berikut

mask = cv2.inRange (ubah saiz, bawah, atas) Di dalam cv2.inRang argumen pertama adalah pemboleh ubah di mana gambar akhir saya disimpan, argumen ke-2 akan menjadi had bawah dan argumen ke-3 adalah had atas.

Sekarang kita akan memaparkan gambar dan topeng utama. Untuk memaparkan kita akan menggunakan fungsi cv2.imshow ()

cv2.imshow ("img", ubah saiz) Ini untuk memaparkan gambar utama. Argumen pertama adalah nama tetingkap yang anda boleh berikan nama yang anda mahukan dan argumen ke-2 berubah-ubah di mana gambar utama saya disimpan yang anda mahu paparkan.

Begitu juga ulangi langkah untuk topeng

cv2.imshow ("Output", topeng)

Langkah 7: Sekarang Langkah Akhir

Sekarang Langkah Akhir
Sekarang Langkah Akhir

Pada langkah terakhir ini kita akan mengekstrak warna kereta dan paparan.

Saya telah membuat hasil nama berubah-ubah. Sekali lagi anda boleh memberikan apa sahaja nama yang anda mahukan. Oleh itu, kita akan menggunakan fungsi cv2.bitwise_and () di mana kita akan menambah gambar bersama-sama dan membuat gambar baru. Dan di mana sahaja piksel di kedua-dua gambar itu ada, ia akan mengambilnya sebagai ya atau "1".

hasil = cv2.bitwise_and (ubah saiz, ubah saiz, topeng = topeng)

  • Dalam ini argumen pertama akan menjadi gambaran kita
  • Hujah ke-2 juga akan menjadi gambar asal kita tetapi diikuti dengan topeng yang kita buat sebelumnya
  • Dan akhirnya hanya memaparkan hasilnya menggunakan fungsi imshow

Cukup copy paste langkah terakhir ini hanya kelewatan dan anda boleh keluar dari tetingkap output dengan menekan "a" pada papan kekunci

Langkah 8: Hasil Akhir

Disyorkan: