Kami akan memulai kode dengan mengimpor modul cv2, sehingga kami memiliki akses ke fungsionalitas pemrosesan gambar Show import cv2 Kemudian kita akan membaca gambar berwarna asli dari sistem file dengan memanggil fungsi imread. Fungsi ini menerima jalur input ke file dan mengembalikan gambar sebagai ndarray. Gambar dibaca dalam format BGR Kami akan membaca gambar yang ditunjukkan di bawah ini pada gambar 1. Ini terdiri dari 3 persegi panjang, satu di Biru (B=255, G=0, R=0), satu di Hijau (B=0, G=255, R=0) dan satu lagi di Merah (B=0, G= . Latar belakangnya hitam (B=0, G=0, R=0) Gambar 1 – Gambar yang akan digunakan untuk membagi saluranKode untuk membaca gambar dapat dilihat di bawah ini img = cv2.imread('C:/Users/N/Desktop/bgr.png')_ Sekarang, untuk membagi gambar menjadi tiga salurannya, kita hanya perlu memanggil fungsi dari modul cv2, meneruskan gambar asli kita sebagai input Fungsi ini akan mengembalikan daftar dengan tiga saluran. Setiap saluran direpresentasikan sebagai ndarray dengan dua dimensi, yang berarti nantinya kita dapat menampilkannya sebagai gambar skala abu-abu Kami akan membongkar setiap elemen daftar dalam variabel yang berbeda blue, green, red = cv2.split(img) Untuk menyelesaikannya, kami akan menampilkan setiap saluran di jendela yang berbeda cv2.imshow('blue', blue) cv2.imshow('green', green) cv2.imshow('red', red) cv2.waitKey(0) cv2.destroyAllWindows() Kode terakhir dapat dilihat di bawah ini import cv2 img = cv2.imread('C:/Users/N/Desktop/bgr.png') blue, green, red = cv2.split(img) cv2.imshow('blue', blue) cv2.imshow('green', green) cv2.imshow('red', red) cv2.waitKey(0) cv2.destroyAllWindows()_ Untuk menguji kode, cukup jalankan di alat pilihan Anda. Dalam kasus saya, saya akan menggunakan IDLE, sebuah IDE Python Anda harus mendapatkan input yang mirip dengan gambar 1 Gambar 2 – Keluaran program dengan 3 saluran terdekomposisiHal pertama yang dapat diperhatikan adalah, seperti yang disebutkan sebelumnya, gambar berada dalam skala abu-abu Kemudian, untuk setiap gambar dari setiap saluran, hanya persegi panjang dengan warna yang sama yang ditampilkan dengan warna putih penuh. Untuk memahami alasannya, mari kita analisis gambar asli lebih detail Pertama kita perlu mempertimbangkan bahwa piksel latar belakang hitam memiliki nilai sama dengan 0 untuk semua saluran. (B=0, G=0, R=0). Jadi, ketika kita mendekomposisi setiap piksel dari area ini dalam tiga saluran, semuanya akan memiliki nilai 0, yang sesuai dengan hitam dalam gambar skala abu-abu. Jika kita melihat piksel dalam persegi panjang biru dari gambar berwarna asli, itu akan memiliki nilai saluran biru sama dengan 255 dan sisanya sama dengan 0. (B=255, G=0, R=0) Jadi, jika kami menampilkan gambar saluran biru di jendela, piksel ini akan sama dengan 255 dan karena ini adalah gambar skala abu-abu, itu sesuai dengan warna putih. Untuk gambar saluran Hijau dan Merah, piksel ini akan sama dengan 0 dan karena merupakan gambar skala abu-abu, piksel ini sesuai dengan warna hitam Inilah sebabnya, pada gambar saluran biru, kita melihat persegi panjang putih dimana pada gambar aslinya adalah persegi panjang Biru. Di gambar saluran lain, kami melihat warna hitam di area tersebut Secara alami, rasional ini berlaku untuk piksel pada persegi panjang lain dan saluran yang sesuai Menampilkan saluran berwarnaPada bagian sebelumnya kita melihat bagaimana menguraikan gambar dalam tiga salurannya dan kemudian bagaimana menampilkan setiap saluran dalam sebuah jendela. Namun, seperti yang terlihat, setiap saluran berkorespondensi dengan ndarray dua dimensi yang, saat ditampilkan, diinterpretasikan sebagai gambar skala abu-abu Jika kami ingin menampilkan setiap saluran sebagai gambar berwarna, kami dapat melakukan hal berikut
Kita akan mulai dengan mengimpor modul cv2 dan numpy. Modul numpy akan dibutuhkan untuk membuat "saluran kosong" Setelah itu, kita akan membaca gambar aslinya dan membaginya, seperti yang kita lakukan sebelumnya import cv2 import numpy img = cv2.imread('C:/Users/N/Desktop/bgr.png') blue, green, red = cv2.split(img) Kemudian kita akan membuat “channel kosong” dengan memanggil fungsi zeros dari modul numpy. Ini akan mengembalikan array ndarray baru dengan bentuk yang ditentukan dan diisi dengan nol Bentuk array baru (dimensinya) ditentukan sebagai tuple yang dilewatkan sebagai input pertama dari fungsi zeros Secara alami, kami ingin tinggi dan lebar "saluran kosong" ini cocok dengan yang dari saluran lain. Kita dapat menggunakan atribut bentuk dari salah satu saluran ini untuk mengatur bentuk "saluran kosong" kita. Anda dapat mempelajari lebih lanjut tentang atribut ini di sini Selain mengatur bentuk, kita juga perlu mengatur tipe ndarray yang dikembalikan oleh fungsi zeros. Itu harus dari tipe uint8 Anda dapat memeriksa di bawah ini cara memanggil fungsi tersebut zeros = numpy.zeros(blue.shape, numpy.uint8)_ Untuk membuat gambar BGR dari tiga saluran terpisah, kita hanya perlu memanggil fungsi, meneruskan tupel dengan saluran sebagai input Jadi, untuk membuat gambar BGR dari saluran Biru, elemen pertama dari tuple harus saluran Biru dan sisanya harus menjadi "saluran kosong" blueBGR = cv2.merge((blue,zeros,zeros)) Prosedurnya sama untuk saluran lainnya greenBGR = cv2.merge((zeros,green,zeros)) redBGR = cv2.merge((zeros,zeros,red))_ Untuk menyelesaikan, kami akan menampilkan tiga gambar yang dihasilkan cv2.imshow('blue BGR', blueBGR) cv2.imshow('green BGR', greenBGR) cv2.imshow('red BGR', redBGR) cv2.waitKey(0) cv2.destroyAllWindows()_ Kode terakhir dapat dilihat di bawah ini img = cv2.imread('C:/Users/N/Desktop/bgr.png')_0 Setelah menjalankan kode, Anda akan mendapatkan hasil yang mirip dengan gambar 3 Gambar 3 – Menampilkan 3 saluran berwarnaSecara alami, ada pendekatan lain untuk mencapai hasil ini, seperti menyalin gambar asli dan memusatkan dua saluran untuk mendapatkan yang ketiga diwarnai. Meskipun demikian, karena di sini kita membahas prosedur pemisahan, kita telah melihat cara mendapatkan setiap saluran berwarna dengan menggunakan fungsi penggabungan Bagaimana cara mendapatkan saluran merah dari suatu gambar dengan Python?Berikut adalah urutan langkah-langkah untuk mengekstrak saluran merah dari sebuah gambar. . Baca gambar menggunakan cv2. imread() imread() mengembalikan array BGR (Biru-Hijau-Merah). . Ekstrak saluran merah saja dengan mengiris array Bagaimana cara mengetahui berapa banyak saluran yang dimiliki suatu gambar?Untuk mendapatkan nomor saluran, kami telah menggunakan kelas OpenCV bernama 'channels()' . Saat kita melewatkan matriks gambar sebagai objek dari kelas 'channels()', ini memberi saluran nilai integer. Program berikut menghitung jumlah saluran dan menampilkannya di jendela konsol.
Bagaimana cara mengekstrak saluran RGB?Ekstrak saluran warna gambar RGB . Pilih gambar dalam format JPEG Pilih saluran warna untuk diekstrak. Merah. Hijau. Biru. Merah dan hijau. Merah dan biru. Biru dan Hijau Pengaturan kompresi Bagaimana cara memisahkan gambar dari saluran dengan Python?split() digunakan untuk membagi gambar berwarna/multisaluran menjadi gambar satu saluran terpisah. |