আমি matplotlib
কোনও আরজিবি ছবিতে পড়তে এবং এটিকে গ্রেস্কেলে রূপান্তর করতে ব্যবহার করার চেষ্টা করছি ।
মাতলাব আমি এটি ব্যবহার:
img = rgb2gray(imread('image.png'));
ইন matplotlib টিউটোরিয়াল তারা তা আবরণ না। তারা কেবল ছবিতে পড়ে
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
এবং তারপরে তারা অ্যারে টুকরো টুকরো করে, তবে আরজিবিকে আমি যা বুঝি তা থেকে গ্রেস্কেলের রূপান্তরিত করার মতো জিনিস নয়।
lum_img = img[:,:,0]
আরজিবি থেকে ধূসরতে রূপান্তরিত করার জন্য নিম্পি বা ম্যাটপ্ল্লোলিবের অন্তর্নির্মিত ফাংশন নেই বলে বিশ্বাস করা আমার পক্ষে কঠিন। ইমেজ প্রসেসিংয়ে এটি কি সাধারণ কাজ নয়?
আমি একটি খুব সাধারণ ফাংশন লিখেছি যা imread
5 মিনিটের মধ্যে আমদানি করা চিত্রটির সাথে কাজ করে । এটি মারাত্মকভাবে অদক্ষ, তবে সে কারণেই আমি অন্তর্নির্মিত কোনও পেশাদার বাস্তবায়ন আশা করছিলাম।
সেবাস্তিয়ান আমার ফাংশনটির উন্নতি করেছে, তবে আমি এখনও বিল্ট-ইনটি খুঁজে পেতে আশা করছি।
মতলব (এনটিএসসি / পাল) বাস্তবায়ন:
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray
gray = np.mean(rgb, -1)
কাজ করে। ধন্যবাদ। এটি ব্যবহার না করার কোনও কারণ আছে কি? পরিবর্তে আমি নীচের উত্তরগুলিতে সমাধানগুলি কেন ব্যবহার করব?
np.mean(rgb, -1)
।
0.2989 * R + 0.5870 * G + 0.1140 * B
আমি ধরে নিচ্ছি যে এটি করার এটি আদর্শ উপায় way
gray = np.mean(rgb, -1)
। সম্ভবতrgb[...,:3]
সেখানে যদি এটি আরজিবা হয়।