Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Imej Skala Kelabu Saya Muncul Dengan Peta Warna Apabila Menggunakan Matplotlib?

Mengapa Imej Skala Kelabu Saya Muncul Dengan Peta Warna Apabila Menggunakan Matplotlib?

DDD
DDDasal
2024-10-27 10:11:03993semak imbas

Why Does My Grayscale Image Appear With a Colormap When Using Matplotlib?

Memaparkan Imej sebagai Skala Kelabu dengan Matplotlib

Apabila bekerja dengan imej menggunakan matplotlib.pyplot.imshow(), menukarnya kepada skala kelabu adalah penting untuk menindih elemen dengan warna. Untuk memudahkan penukaran ini, fungsi Image.open().convert("L") PIL biasanya digunakan.

Masalah

Walaupun menggunakan PIL untuk menukar imej kepada skala kelabu, memaparkannya dengan matplotlib.pyplot.imshow() menghasilkan imej yang muncul dengan peta warna dan bukannya skala kelabu sebenar.

Penyelesaian

Untuk menyelesaikan isu ini, ia adalah penting untuk menentukan hujah colormap apabila memanggil matplotlib.pyplot.imshow(). Secara lalai, matplotlib memilih peta warna yang mungkin memperkenalkan warna ke dalam imej. Untuk memastikan perwakilan skala kelabu, tetapkan cmap='gray' dan tentukan julat nilai kelabu secara eksplisit menggunakan vmin=0 dan vmax=255.

Kod Contoh

Kod berikut coretan menunjukkan cara untuk memuatkan imej, menukarnya kepada skala kelabu dan memaparkannya:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

fname = 'image.png'
image = Image.open(fname).convert("L")
arr = np.asarray(image)
plt.imshow(arr, cmap='gray', vmin=0, vmax=255)
plt.show()</code>

Sebagai alternatif, jika anda lebih suka perwakilan skala kelabu songsang, ubah suai argumen cmap kepada 'gray_r'.

Atas ialah kandungan terperinci Mengapa Imej Skala Kelabu Saya Muncul Dengan Peta Warna Apabila Menggunakan Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn