ব্যবহার বালিশ (যা পাইথন যেমন 2.7+ পাশাপাশি পাইথন 3.x সঙ্গে কাজ করে), আপনি নিম্নলিখিতগুলি করতে পারেন:
from PIL import Image
im = Image.open('image.jpg', 'r')
width, height = im.size
pixel_values = list(im.getdata())
এখন আপনার সমস্ত পিক্সেল মান আছে। এটি আরজিবি হলে বা অন্য কোনও মোড পড়তে পারে im.mode
। তারপরে আপনি এর মাধ্যমে পিক্সেল পেতে পারেন (x, y)
:
pixel_values[width*y+x]
বিকল্পভাবে, আপনি নম্পি ব্যবহার করতে পারবেন এবং অ্যারে পুনরায় আকার দিন:
>>> pixel_values = numpy.array(pixel_values).reshape((width, height, 3))
>>> x, y = 0, 1
>>> pixel_values[x][y]
[ 18 18 12]
একটি সম্পূর্ণ, সমাধান সহজ সমাধান
# Third party modules
import numpy
from PIL import Image
def get_image(image_path):
"""Get a numpy array of an image so that one can access values[x][y]."""
image = Image.open(image_path, "r")
width, height = image.size
pixel_values = list(image.getdata())
if image.mode == "RGB":
channels = 3
elif image.mode == "L":
channels = 1
else:
print("Unknown mode: %s" % image.mode)
return None
pixel_values = numpy.array(pixel_values).reshape((width, height, channels))
return pixel_values
image = get_image("gradient.png")
print(image[0])
print(image.shape)
কোড পরীক্ষা করে ধোঁয়া
প্রস্থ / উচ্চতা / চ্যানেলের ক্রম সম্পর্কে আপনি অনিশ্চিত হতে পারেন। এই কারণে আমি এই গ্রেডিয়েন্টটি তৈরি করেছি:
চিত্রটির প্রস্থ 100px এবং উচ্চতা 26px রয়েছে। এর একটি বর্ণ গ্রেডিয়েন্ট রয়েছে #ffaa00
(হলুদ) থেকে #ffffff
(সাদা) to আউটপুটটি হ'ল:
[[255 172 5]
[255 172 5]
[255 172 5]
[255 171 5]
[255 172 5]
[255 172 5]
[255 171 5]
[255 171 5]
[255 171 5]
[255 172 5]
[255 172 5]
[255 171 5]
[255 171 5]
[255 172 5]
[255 172 5]
[255 172 5]
[255 171 5]
[255 172 5]
[255 172 5]
[255 171 5]
[255 171 5]
[255 172 4]
[255 172 5]
[255 171 5]
[255 171 5]
[255 172 5]]
(100, 26, 3)
বিষয়গুলি নোট করুন:
- আকৃতিটি (প্রস্থ, উচ্চতা, চ্যানেল)
image[0]
, অত প্রথম সারিতে, একই রং এর 26 triples হয়েছে