ম্যাটপ্ল্লোব ব্যবহার করে গ্রেস্কেল হিসাবে চিত্র প্রদর্শন করুন


231

আমি matplotlib.pyplot.imshow () ব্যবহার করে গ্রেস্কেল চিত্র প্রদর্শনের চেষ্টা করছি । আমার সমস্যাটি হল গ্রেস্কেল চিত্রটি রঙিন মানচিত্র হিসাবে প্রদর্শিত হয়। আমার গ্রেস্কেল দরকার কারণ আমি রঙের সাথে ছবির উপরে আঁকতে চাই।

আমি ছবিটিতে পড়েছি এবং পিআইএল এর চিত্র.ওপেন () ব্যবহার করে গ্রেস্কেলতে রূপান্তর করি convert রূপান্তর ("এল")

image = Image.open(file).convert("L")

তারপরে আমি চিত্রটিকে ম্যাট্রিক্সে রূপান্তর করি যাতে আমি সহজেই ব্যবহার করে কিছু চিত্র প্রক্রিয়াকরণ করতে পারি

matrix = scipy.misc.fromimage(image, 0)

যাইহোক, আমি যখন না

figure()  
matplotlib.pyplot.imshow(matrix)  
show()

এটি একটি বর্ণম্যাপ ব্যবহার করে চিত্রটি প্রদর্শন করে (যেমন এটি গ্রেস্কেল নয়)।

আমি এখানে কি ভুল করছি?

উত্তর:


368

নিম্নলিখিত কোডটি একটি ফাইল থেকে একটি চিত্র লোড করবে image.pngএবং এটি গ্রেস্কেল হিসাবে প্রদর্শিত হবে।

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()

যদি আপনি বিপরীত গ্রেস্কেলটি প্রদর্শন করতে চান তবে cmap এ স্যুইচ করুন cmap='gray_r'


4
@ জেজে: এই ডক স্ট্রিং অনুসারে , "নোট করুন যে এখানে তালিকাভুক্ত যে কোনও রঙিন মানচিত্র সংযোজন করে বিপরীত হতে পারে _r" "
unutbu

31
সতর্কতা matplotlib পিক্সেল স্কেল তীব্রতা সামঞ্জস্য করুন যদি আপনি ব্যবহার না চান:plt.imshow(im_gray,cmap='gray', vmin = 0, vmax = 255)
themadmax


17

import matplotlib.pyplot as plt

আপনি আপনার কোডে একবার চালাতে পারেন

plt.gray()

এটি ডিফল্ট হিসাবে গ্রেস্কেলের চিত্রগুলি দেখায়

im = array(Image.open('I_am_batman.jpg').convert('L'))
plt.imshow(im)
plt.show()

আপনি কোন লাইব্রেরির জন্য gray()বা ব্যবহার করছেন grey()?
শারিলহোহমান

@ শেরিলহোমান, এটি gray... ধূসর হ'ল আমেরিকান বানান এবং ধূসর একই বর্ণের জন্য ব্রিটিশ বানান।
ক্লাউড চ

12

আমি get_cmap পদ্ধতিটি ব্যবহার করব। প্রাক্তন .:

import matplotlib.pyplot as plt

plt.imshow(matrix, cmap=plt.get_cmap('gray'))

11

@ আনটবুর উত্তর সঠিক উত্তরের বেশ কাছাকাছি।

ডিফল্টরূপে, plt.imshow () আপনার (MxN) অ্যারে ডেটা 0.0 ~ 1.0 এ স্কেল করার চেষ্টা করবে। এবং তারপরে 0 ~ 255 এ মানচিত্র করুন। বেশিরভাগ প্রাকৃতিক তোলা চিত্রগুলির জন্য, এটি ভাল, আপনি অন্যটি দেখতে পাবেন না। তবে আপনার যদি পিক্সেল মান চিত্রের সংকীর্ণ পরিসর থাকে, মিনিট পিক্সেলটি 156 এবং সর্বোচ্চ পিক্সেলটি 234 বলুন The ধূসর চিত্রটি সম্পূর্ণ ভুল দেখায় looks ধূসরতে একটি চিত্র দেখানোর সঠিক উপায় হ'ল

from matplotlib.colors import NoNorm
...
plt.imshow(img,cmap='gray',norm=NoNorm())
...

আসুন একটি উদাহরণ দেখুন:

এটি হ'ল অরিজিওনাল ইমেজ: আদি

এটি ডিফল্ট আদর্শ সেটিংস ব্যবহার করছে যা কোনটি নয়: ভুল ছবি pic

এটি NoNorm সেটিংটি ব্যবহার করছে, যা NoNorm (): রাইট পিক



4

কোনও বিরক্তি ব্যবহার করবেন না এবং ধূসরতে সেট করুন।

import matplotlib.pyplot as plt
plt.imshow(img[:,:,1], cmap='gray',interpolation='none')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.