Cara mengubah warna gambar dengan python

Louloudevinci
Programmer bernama Tim

Postingan. 9

Utas. 3

Bergabung. Maret 2018

Reputasi. 0

Mar-23-2018, 09. 08 malam

Hai
Saya memiliki gambar dasar, berwarna
Saya ingin mengubah setiap warna dengan warna lain
Saya tahu fungsi putpixel, dan lain-lain
Masalah saya adalah saya tidak tahu cara memisahkan, menunjukkan setiap "zona" warna
Misalnya. mengubah semua piksel hijau menjadi warna lain, semua merah menjadi warna lain, dan lain-lain
Adakah yang punya saran untuk diberikan kepada saya?
Terima kasih sebelumnya ^u^

Membalas

Menemukan

Membalas

nilamo
Kamisisme terakhir

Cara mengubah warna gambar dengan python

Postingan. 3.458

Utas. 101

Bergabung. Sep 2016

Reputasi. 143

23-Mar-2018, 10. 00 sore

Untuk referensi di masa mendatang, tidak langsung jelas Anda berbicara tentang PIL. Paket yang Anda gunakan adalah hal yang berguna untuk dibagikan. p

Doc pythonware memiliki catatan bahwa putpixel() dikenal lambat, dan jika Anda ingin memodifikasi area yang luas, Anda harus memanggil load() untuk mendapatkan akses ke data piksel

Menulis. Perhatikan bahwa metode ini agak lambat;

Jika Anda memiliki warna tertentu yang Anda ubah, inilah contoh yang menggunakan load()
https. //stackoverflow. com/a/3766325 Menulis.
from PIL import Image
import sys

img = Image.open(sys.argv[1])
img = img.convert("RGBA")

pixdata = img.load()

# Clean the background noise, if color != white, then set to black.

for y in xrange(img.size[1]):
    for x in xrange(img.size[0]):
        if pixdata[x, y] == (255, 255, 255, 255):
            pixdata[x, y] = (0, 0, 0, 255)

Jika Anda telah menginstal numpy, ini sepertinya cara terbaik
https. //stackoverflow. com/a/3753428 Menulis.
import Image
import numpy as np

im = Image.open('test.png')
im = im.convert('RGBA')

data = np.array(im)   # "data" is a height x width x 4 numpy array
red, green, blue, alpha = data.T # Temporarily unpack the bands for readability

# Replace white with red.. (leaves alpha values alone...)
white_areas = (red == 255) & (blue == 255) & (green == 255)
data[..., :-1][white_areas.T] = (255, 0, 0) # Transpose back needed

im2 = Image.fromarray(data)
im2.show()
_

Membalas

Menemukan

Membalas

Louloudevinci
Programmer bernama Tim

Postingan. 9

Utas. 3

Bergabung. Maret 2018

Reputasi. 0

Mar-25-2018, 08. 27 malam

Wooo, terima kasih atas semua bantuan ini. Ini sangat keren

Membalas

Menemukan

Membalas

Pada artikel ini, saya mencoba menjelaskan eksplorasi saya tentang mengapa ada kebutuhan untuk menukar warna dalam gambar dan bagaimana kita dapat menggunakan metode pemrosesan gambar sederhana untuk menukar warna secara cerdas dalam gambar dengan menerapkan hal yang sama di Python

Pertukaran Warna mengacu pada gagasan untuk mengganti warna/warna tertentu dalam gambar dengan beberapa warna yang ditargetkan untuk tujuan eksplorasi, desain, pembuatan gambar, dll.

MENGAPA BERTUKAR WARNA?

Ada beberapa alasan mengapa pertukaran warna mungkin menarik bagi Ilmuwan Data

  1. Sebagai praktisi ilmu data, kami mungkin ingin menggunakan metode pertukaran warna sebagai strategi augmentasi data, yang membantu meningkatkan jumlah data sambil menangani algoritme pembelajaran mendalam.
  2. Sering kali cukup menantang untuk menemukan kumpulan data nyata, open-source, besar untuk mempelajari algoritme, dalam kasus seperti itu penggunaan data sintetis dapat menjadi sangat membantu. Jadi, ketika data gambar terbatas, teknik pemrosesan gambar ini bisa sangat berguna dalam pembuatan gambar sintetik berkualitas baik
  3. Kami mungkin ingin mencoba beberapa hal keren seperti menukar warna latar belakang saat menghadiri rapat, menyesuaikan warna baju, dll.

RUANG WARNA

Mirip dengan bagaimana kami memiliki berbagai jenis sistem angka untuk mewakili angka (mis. biner, desimal, heksadesimal, dll. ), dengan cara yang sama, ada sistem numerik yang berbeda untuk merepresentasikan asosiasi warna/warna dalam tampilan/gambar tertentu. Sistem ini dikenal sebagai Ruang Warna

Sebelum terjun ke penerapan smart color mapping, pertama-tama mari kita coba memahami beberapa ruang warna yang banyak digunakan di ranah Computer Vision dan Image processing

ruang warna RGB

Ini adalah ruang 3 dimensi berdasarkan model warna RGB. Dalam model ini, warna apa pun merupakan campuran intensitas berbeda dari tiga komponen warna primer — Merah, Biru, dan Hijau. Komponen ini dapat dianggap sebagai koordinat matematis dari ruang warna. Model ini paling baik divisualisasikan dengan bantuan kubus dalam ruang kartesius 3D

Ara. Kubus warna RGB dengan panjang sisi satuan. Gambar oleh Penulis

Konvergensi semua komponen dalam intensitas penuh menghasilkan warna putih. Secara default, OpenCV membaca dan menyimpan gambar dalam format BGR

ruang warna HSV

Ini adalah ruang warna 3 dimensi berdasarkan model warna HSV. Dalam model ini, kami memiliki komponen terpisah untuk merepresentasikan warna dan intensitas
* Hue - mewakili warna (biru, merah, hijau, dll. ), Nilainya berkisar dari 0 hingga 360*
* Saturasi -mewakili jumlah kemurnian atau warna dari suatu warna. Nilai saturasi yang lebih rendah akan menyiratkan warna pudar atau abu-abu
* Nilai - mewakili terang atau gelapnya rona

Model ini paling baik divisualisasikan dengan bantuan sistem koordinat silinder (walaupun sebagian besar teks menggunakan kerucut 3D, silinder 3D sebenarnya adalah representasi matematis yang lebih akurat)

Ara. Model warna HSV, dengan radius satuan dan tinggi satuan. “?” . Gambar oleh Penulis

Dalam model ini, sudut azimut (0–360*) menentukan komponen rona, jarak radial dari pusat terkait dengan komponen saturasi, dan jarak sepanjang sumbu mewakili kecerahan gambar

ruang warna LAB

Mirip dengan bagaimana ruang warna HSV memisahkan komponen warna dari komponen intensitas dan kecerahan, ruang warna LAB menggunakan 2 komponen untuk merepresentasikan warna dan 1 komponen terpisah untuk merepresentasikan nilai kecerahan
* L. komponen ringan,
* A. komponen warna yang menentukan kombinasi warna Merah/Hijau,
* B. komponen warna yang menentukan kombinasi warna Biru/Kuning

Model warna paling baik divisualisasikan dengan bantuan bola dalam ruang 3-D

Ara. Model warna LAB dengan radius satuan. Gambar oleh Penulis

Masing-masing ruang yang berbeda ini memiliki kelebihan dan kekurangannya masing-masing tergantung pada penerapan penggunaannya

PERCOBAAN

Mari masuk ke bagian implementasi. Mari pertimbangkan beberapa skenario pertukaran warna, kita akan mulai dengan gambar pertukaran warna yang sederhana (maksud saya sederhananya distribusi warna tidak banyak berbeda) dan secara bertahap lanjutkan ke contoh di mana gambar memiliki distribusi warna yang bervariasi di mana itu akan terjadi.

Mari kita perhatikan gambar di bawah ini. Tampak seperti pena hijau dengan badan plastik, terdiri dari ujung logam, dan tutup plastik hijau dengan beberapa bagian logam dan desain hitam di bagian atas

Ara. gambar asli pena. Gambar oleh Penulis

Sekarang, Kami ingin mengubah warna badan pena dari hijau menjadi ungu dan ingin gambar yang dihasilkan menjadi realistis seperti aslinya dan membutuhkan semua iluminasi dan bayangan untuk dipertimbangkan dalam gambar yang dihasilkan. Bisakah kita melakukannya di ruang RGB? . Catatan. ketika sebuah gambar dimuat dengan bantuan pustaka Open-CV, kisaran komponen dalam ruang warna tertentu biasanya dari 0 hingga 255. Untuk HSV, OpenCV menggunakan H. 0–179, S. 0–255, V. 0–255

Ara. Sumbu x mewakili Hue di [0,180)

Ara. Peningkatan nilai komponen “B” dengan jumlah yang tetap akan menghasilkan perubahan nilai warna dan intensitas. Gambar oleh Penulis

Sekarang, alasan dari gambar yang dihasilkan aneh ini adalah itu

  • Ruang RGB menentukan informasi warna dan intensitas dengan bantuan ketiga komponen (R, G, dan B)
  • Setiap piksel dalam gambar RGB adalah kombinasi spesifik dari komponen-komponen ini dan kami tidak dapat menafsirkan berapa banyak komponen yang perlu diubah untuk mendapatkan warna yang diinginkan.
  • Setiap perubahan pada salah satu komponen R, G, B, akan membawa perubahan warna dan nilai intensitas piksel

Akan sangat mudah untuk menukar warna jika ada ruang di mana informasi warna dan intensitas akan ditentukan dalam komponen terpisah yang tidak bergantung satu sama lain. Di sinilah ruang warna seperti HSV dan LAB masuk ke dalam gambar. Sekarang mari coba menukar warna pena dengan mengubah nilai rona dalam ruang warna HSV

Ara. Gambar diperoleh dengan mengubah komponen hue dari gambar. Tidak ada gangguan pada nilai kecerahan dan saturasi. Gambar terlihat realistis. Gambar oleh Penulis

Mirip dengan bagaimana mengubah nilai rona tidak memengaruhi komponen kecerahan gambar, mari kita periksa apakah kita dapat mengubah kecerahan gambar tanpa mengganggu komponen warna/rona gambar

Ara. Gambar diperoleh dengan menurunkan komponen brightness. Gambar oleh Penulis

Jelas, bermain dengan berbagai komponen dalam ruang warna HSV cukup mudah. Kami melihat bagaimana memodifikasi komponen berbeda membantu kami mengubah komponen warna dan kecerahan gambar secara terpisah

Mengalikan saluran kecerahan dengan 0. 6 (efek penggelapan) juga menghasilkan penggelapan latar belakang. Pada gambar sebelumnya juga, kami melihat perubahan nilai rona menghasilkan perubahan warna latar belakang

Mari kita periksa bagaimana kita hanya dapat mengubah warna pena atau hanya mengubah kecerahan latar depan tanpa mengubah latar belakang. Perhatikan, ada teknik berbasis pembelajaran mendalam lainnya seperti GAN yang juga dapat digunakan untuk mencapai hal yang sama, dalam artikel ini kita hanya berbicara tentang teknik pemrosesan gambar sederhana yang memecahkan masalah tersebut

Idenya adalah untuk membuat topeng biner rentang warna baik untuk latar belakang atau latar depan dan kemudian menggunakan topeng itu untuk secara selektif menerapkan perubahan warna ke latar depan. Tapi, topeng untuk warna apa? . Berikut tampilan saluran rona dan histogram kami

Ara. Saluran rona untuk gambar pena asli. Gambar oleh Penulis

Ara. histogram distribusi warna. Gambar oleh Penulis

Histogram di atas menyiratkan bahwa puncak terjadi pada ~120 yang sebagian besar merupakan warna latar belakang dan noise pada gambar kita. Dari ruang warna HSV di atas, terlihat bahwa puncak warna hijau sekitar 55–65, itulah sebabnya kita melihat puncak kecil di sekitar interval yang sama pada plot di atas. Karenanya, kami mencoba membuat topeng untuk kisaran Hue yang serupa

Ara. topeng warna untuk pena (latar depan). Gambar oleh Penulis

Sekarang, mari tingkatkan nilai rona piksel bukan nol dalam topeng biner ini

Ara. kami mengubah warna latar depan tanpa mengubah latar belakang. Dan semua iluminasi tetap utuh. Gambar oleh Penulis

Dan begitulah cara kami berhasil menukar warna gambar tanpa memanipulasi warna latar belakang

Terakhir, saya ingin memberikan sedikit catatan tentang metode Chroma Keying yang cukup populer di TV dan film. Teknik ini juga dapat digunakan untuk menukar warna pada gambar. Di sini idenya adalah memulai dengan dua gambar, satu latar depan dipasang di layar hijau atau hitam dan kedua gambar yang perlu ditumpangkan di latar belakang. Pendekatannya adalah pertama-tama mengekstrak semua piksel hijau atau hitam pada gambar, membuat piksel ini transparan yang memungkinkan kita untuk melapisi gambar yang diinginkan di latar belakang. Namun, metode ini membutuhkan permukaan yang sangat halus dengan iluminasi yang sangat minim

Saya harap Anda menikmati ide bertukar warna. Saya akan dengan senang hati menjawab pertanyaan tentang salah satu konsep yang disebutkan di atas. Saya ingin mengetahui tanggapan dari siapa pun yang membaca artikel ini. Anda dapat menghubungi saya melalui Linkedin

Bagaimana Anda mengubah warna gambar dengan Python?

Menggunakan modul ImageColor, kita juga dapat mengonversi warna ke format RGB (rgb tuple) karena rgb sangat nyaman untuk melakukan operasi yang berbeda. Untuk melakukannya, kita akan menggunakan ImageColor. metode getgrb() .

Bagaimana cara mengubah warna gambar di Opencv Python?

Daftar Isi .
Langkah 1. Impor perpustakaan dan baca gambarnya. Gambar yang kita gunakan di sini adalah. impor cv2 image_gray=cv2. cvtColor(gambar, cv2. COLOR_BGR2GRAY )
Langkah 2. Ubah ruang warna menggunakan cv2. cvtColor() Kita dapat mengubah ruang warna gambar menggunakan cv2

Bagaimana cara mengubah nilai RGB suatu gambar dengan Python?

4 Jawaban .
dapatkan warna RGB dari piksel [r,g,b]=img. getpixel((x, y))
perbarui nilai rgb baru r = r + rtint g = g + gtint b = b + btint nilai = (r,g,b)
tetapkan nilai rgb baru kembali ke piksel img. putpixel((x, y), nilai)

Bagaimana Anda mengubah warna sesuatu dengan Python?

Kita dapat menggunakan gaya kode ANSI untuk membuat teks Anda lebih mudah dibaca dan kreatif, Anda dapat menggunakan kode escape ANSI untuk mengubah warna keluaran teks dalam program python. .
\033[ = Kode melarikan diri, ini selalu sama
1 = Gaya, 1 untuk normal
32 = Warna teks, 32 untuk hijau terang