Daftar Isi:

Deteksi Warna dengan Python Menggunakan OpenCV: 8 Langkah
Deteksi Warna dengan Python Menggunakan OpenCV: 8 Langkah

Video: Deteksi Warna dengan Python Menggunakan OpenCV: 8 Langkah

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

Halo! Instruksi ini digunakan untuk memandu tentang cara mengekstrak warna tertentu dari gambar dengan python menggunakan pustaka openCV. Jika Anda baru mengenal teknik ini maka jangan khawatir, di akhir panduan ini Anda akan dapat memprogram program deteksi warna Anda sendiri.

Berikut ini adalah fungsi atau bisa kita katakan teknik yang akan Anda pelajari, 1. Cara membaca gambar

2. Cara membuat Track Bar

3. Bagaimana mengatur nilai Hue, Saturation dan nilai dari sebuah gambar menggunakan track bar

4. Dan kemudian akan ada hasil akhir Anda

Anda dapat menonton video dari output yang saya lampirkan di bawah ini.

Jadi mari kita mulai

Perlengkapan

  • Python 3
  • perpustakaan openCV
  • perpustakaan numpy

Langkah 1: Mengimpor Perpustakaan

Mengimpor Perpustakaan
Mengimpor Perpustakaan

Gambar ferrari kuning seperti yang ditunjukkan dan kami akan memprogram untuk mengekstrak hanya warna kuning dari gambar itu

Langkah pertama adalah mengimpor perpustakaan kami

1. Termasuk perpustakaan openCV. Itu disebut cv2 di python

2. Termasuk perpustakaan numpy sebagai np. The "as" memungkinkan kita untuk numpy sebagai np jadi tidak perlu menulis numpy lagi dan lagi

Langkah 2: Membuat Track Bar

Membuat Track Bar
Membuat Track Bar

Track Bar dibuat untuk menyesuaikan nilai Hue, Saturation dan Value dalam sebuah gambar.

cv2.namedWindow("TrackBars") Baris kode ini digunakan untuk membuat jendela keluaran baru dan nama jendela diberikan sebagai TrackBars (Anda dapat memberikan nama apa pun yang Anda inginkan)

cv2.resizeWindow("TrackBars", 600, 250) Fungsi ini digunakan untuk mengubah ukuran jendela. "TrackBars" adalah jendela mana yang ingin Anda ubah ukurannya karena saya ingin mengubah ukuran jendela TrackBars Saya telah menulis nama itu. Diikuti oleh dua bilangan bulat. Kedua bilangan bulat itu adalah lebar dan tinggi. Anda dapat bermain-main dengan dua angka itu untuk mengubah ukurannya

Langkah 3: Membuat TrackBars untuk Hue, Saturation dan Value

Membuat TrackBars untuk Hue, Saturation, dan Value
Membuat TrackBars untuk Hue, Saturation, dan Value
Membuat TrackBars untuk Hue, Saturation, dan Value
Membuat TrackBars untuk Hue, Saturation, dan Value

Sekarang kita akan membuat total 6 TrackBars untuk Hue, Saturation dan value. Masing-masing akan memiliki dua yaitu 1 untuk minimum dan 1 untuk maksimum. Kami akan menggunakan fungsi createTrackbar dari openCV. Pertama kita akan melihat sintaks dari fungsi ini.

cv2.createTrackbar("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Ini mungkin membingungkan tapi jangan khawatir kita akan melalui setiap langkah. Ingatlah satu hal bahwa dalam openCV nilai hue adalah 179, saturasi adalah 255 dan nilainya adalah 255

1. Membuat TrackBar untuk rona min:

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

Dalam Hue min ini adalah nama trackbar, TrackBars adalah jendela utama, 0 adalah posisi dimana slider kita akan berada dan 179 adalah range yang berarti 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 jendela utama, 179 adalah posisi dimana slider kita akan berada dan 179 adalah jangkauan maksimum yang berarti silder akan bergerak dari 179-0

3. Demikian pula ulangi langkah-langkah untuk sat min, sat max, val min dan val max seperti yang ditunjukkan pada gambar

Gambar dengan latar belakang putih adalah gambar keluaran. Beginilah tampilan bilah trek Anda

Langkah 4: Cara Membaca dan Mengubah Ukuran Gambar

Cara Membaca dan Mengubah Ukuran Gambar
Cara Membaca dan Mengubah Ukuran Gambar

cv2.imread() memungkinkan Anda membaca gambar. Satu pemikiran penting yang perlu Anda ingat bahwa lokasi gambar Anda harus berada di folder yang sama dengan tempat program disimpan. Kita akan memasukkan while loop karena harus dijalankan sampai sedang membaca gambar atau bisa kita katakan sampai kondisinya benar

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

  • Dalam hal ini saya telah membuat nama variabel " img " di mana saya menyimpan gambar
  • Di dalam cv2.imread tulis nama gambar dengan ekstensi di dalam tanda kutip ganda

Untuk mengubah ukuran gambar kita akan menggunakan fungsi cv2.resize. Bagian ini opsional, jika Anda ingin mengubah ukuran maka Anda dapat menggunakan fungsi ini

Di dalam cv2.resize pertama tulis nama variabel di mana gambar disimpan dan kemudian lebar dan tingginya

Langkah 5: Membaca Nilai Track Bar untuk Menerapkannya ke Gambar

Membaca Nilai Track Bar untuk Menerapkannya ke Gambar
Membaca Nilai Track Bar untuk Menerapkannya ke Gambar
Membaca Nilai Track Bar untuk Menerapkannya ke Gambar
Membaca Nilai Track Bar untuk Menerapkannya ke Gambar

Ok jadi sekarang kita akan membaca nilai trackbar bar sehingga kita bisa menerapkannya pada gambar kita. Kita akan mendapatkan nilai menggunakan fungsi cv2.getTrackbarPos().

Mari kita mulai dengan bagian itu…

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

Dalam pernyataan di atas saya membuat nama variabel h_min di mana saya akan menyimpan nilai Hue min. Jadi di dalam cv2.getTrackbarPos argumen pertama adalah " Hue min " karena saya ingin nilai hue min (Ejaannya harus sama persis dengan fungsi createTrackbar) dan argumen kedua adalah nama jendela trackbar tempatnya.

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

Langkah 6: Menampilkan Gambar dan Mengatur Batas Atas dan Bawah

Menampilkan Gambar dan Mengatur Batas Atas dan Bawah
Menampilkan Gambar dan Mengatur Batas Atas dan Bawah

Sekarang kita memiliki nilai min dan max dari hue, saturation dan value, kita akan menggunakan nilai ini untuk memfilter gambar sehingga kita bisa mendapatkan output warna tertentu dari sebuah gambar.

Kami akan membuat topeng untuk ini menggunakan fungsi cv2.inRange. Dan sebelum itu kita akan mengatur batas atas dan bawah dari hue, saturation dan value

Jadi buat nama variabel " lebih rendah " dan gunakan fungsi array numpy atur rentang min untuk ketiganya sebagai berikut

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

Ulangi langkah yang sama untuk bagian atas

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

Sekarang kita akan membuat topeng sebagai berikut

mask = cv2.inRange(resize, lower, upper) Di dalam cv2.inRang argumen pertama akan menjadi variabel di mana gambar terakhir saya disimpan, argumen ke-2 akan menjadi batas bawah dan argumen ke-3 akan menjadi batas atas.

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

cv2.imshow("img", ubah ukuran) Ini untuk menampilkan gambar utama. Argumen pertama adalah nama jendela yang dapat Anda beri nama apa pun yang Anda inginkan dan argumen kedua adalah variabel di mana gambar utama saya disimpan yang ingin Anda tampilkan.

Demikian pula ulangi langkah untuk topeng

cv2.imshow("Keluaran", topeng)

Langkah 7: Sekarang Langkah Terakhir

Sekarang Langkah Terakhir
Sekarang Langkah Terakhir

Pada langkah terakhir ini kita akan mengekstrak warna mobil dan tampilannya.

Saya telah membuat hasil nama variabel. Sekali lagi Anda dapat memberikan nama yang Anda inginkan. Jadi kita akan menggunakan fungsi cv2.bitwise_and() di mana kita akan menambahkan gambar bersama-sama dan membuat gambar baru. Dan di mana pun piksel di kedua gambar ada, itu akan dianggap sebagai ya atau " 1 ".

hasil = cv2.bitwise_and(mengubah ukuran, mengubah ukuran, mask=mask)

  • Dalam argumen 1 ini akan menjadi gambar kita
  • Argumen ke-2 juga akan menjadi gambar asli kami tetapi diikuti oleh topeng yang diterapkan yang kami buat sebelumnya
  • Dan akhirnya hanya menampilkan hasilnya menggunakan fungsi imshow

Cukup salin tempel langkah terakhir ini hanya penundaan dan Anda dapat keluar dari jendela output dengan menekan " a " pada keyboard

Langkah 8: Hasil Akhir

Direkomendasikan: