কম্পিউটার টিউটোরিয়াল

পাইথনে আকার বৈশিষ্ট্যের ভিত্তিতে ছবি ফিল্টার করা


পাইথনে ছবি প্রক্রিয়াকরণের জন্য লাইব্রেরি

পাইথনে ছবি প্রক্রিয়াকরণের জন্য পিলো (Pillow), পাইথন ইমেজিং লাইব্রেরি (PIL), সাইকিট-ইমেজ (scikit-image) বা ওপেনসিভি (OpenCV) gibi একাধিক লাইব্রেরি রয়েছে। এখানে আমরা পিলো লাইব্রেরি ব্যবহার করব কারণ এটি ছবি ম্যানিপুলেশনের জন্য মানক প্রক্রিয়া প্রদান করে এবং জেপিজি, পিএনজি, জিআইএফ, টিআইএফএফ, বিএমপি সহ বিভিন্ন ছবি ফাইল ফরম্যাট সমর্থন করে।

পিলো লাইব্রেরি পাইথন ইমেজিং লাইব্রেরি (PIL)-এর উপরে নির্মিত এবং এর родитель লাইব্রেরির চেয়ে আরও ফিচার প্রদান করে।

ইনস্টলেশন

পিপ (pip) ব্যবহার করে পিলো ইনস্টল করা যায়। কমান্ড টার্মিনালে নিচের কমান্ডটি চালান:

$ pip install pillow

পিলো দিয়ে মৌলিক অপারেশন

পিলো লাইব্রেরি ব্যবহার করে ছবির উপর কিছু মৌলিক অপারেশন করা যাক।

from PIL import Image
image = Image.open(r"C:\Users\rajesh\Desktop\imagefolder\beach-parga.jpg")
image.show()
# সোর্স ফাইলের ফাইল ফরম্যাট
# আউটপুট: JPEG
print(image.format)
# ছবিতে ব্যবহৃত পিক্সেল ফরম্যাট। সাধারণ মান: "1", "L", "RGB", বা "CMYK"
# আউটপুট: RGB
print(image.mode)
# ছবির আকার, পিক্সেলে। আকারটি 2-টাপল (প্রস্থ, উচ্চতা) হিসেবে দেওয়া হয়।
# আউটপুট: (2048, 1365)
print(image.size)
# রঙের প্যালেট টেবিল, যদি থাকে।
# আউটপুট: None
print(image.palette)

আউটপুট

পাইথনে আকার বৈশিষ্ট্যের ভিত্তিতে ছবি ফিল্টার করা

JPEG RGB (2048, 1365) None

আকার অনুযায়ী ছবি ফিল্টার করা

নিচের প্রোগ্রামটি একটি নির্দিষ্ট পথ (ডিফল্ট পথ: বর্তমান ওয়ার্কিং ডিরেক্টরি) থেকে সমস্ত ছবির আকার কমিয়ে দেয়। প্রোগ্রামে max_height, max_width বা ছবির এক্সটেনশন পরিবর্তন করা যায়।

কোড

import os
from PIL import Image

max_height = 900
max_width = 900
extensions = ['JPG']
path = os.path.abspath(".")

def adjusted_size(width, height):
    if width > max_width or height > max_height:
        if width > height:
            return max_width, int(max_width * height / width)
        else:
            return int(max_height * width / height), max_height
    else:
        return width, height

if __name__ == "__main__":
    for img in os.listdir(path):
        if os.path.isfile(os.path.join(path, img)):
            img_text, img_ext = os.path.splitext(img)
            img_ext = img_ext[1:].upper()
            if img_ext in extensions:
                print(img)
                image = Image.open(os.path.join(path, img))
                width, height = image.size
                image = image.resize(adjusted_size(width, height))
                image.save(os.path.join(path, img))

আউটপুট

another_Bike.jpg clock.JPG myBike.jpg Top-bike-wallpaper.jpg

উপরের স্ক্রিপ্টটি চালালে, বর্তমান ওয়ার্কিং ডিরেক্টরিতে (যেটি বর্তমানে পাইথন স্ক্রিপ্ট ফোল্ডার) الموجود ছবিগুলোর সর্বোচ্চ আকার ৯০০ পিক্সেল (প্রস্থ/উচ্চতা) হবে।

  1. পাইথনে ইমেজ প্রসেসিং (Image Processing)

  2. পাইথনে ছবি পড়া (OpenCV এবং PIL ব্যবহার করে)

  3. পাইথনে ফোটোমোজেইক ইমপ্লিমেন্টেশন (Photomosaics)

  4. পাইথনে OpenCV ব্যবহার করে ইমেজ ইরোশন এবং ডাইলেশন