عناوین

برنامه نویسی ترم یازدهم

نام دوره آموزشی زبان برنامه نویسی آموزشی مدتشهریه (ریال)
برنامه نویسی ترم یازدهمPillow15 جلسه (1/5 ساعته) : 30 ساعت 80.000.000

رئوس مطالب

🟢 هفته اول:

جلسه ۱: ورود به دنیای پیکسل‌ها

  • هدف: نصب محیط و درک اینکه یک تصویر در کامپیوتر چیست.
  • مباحث: نصب Pillow، باز کردن فایل، نمایش تصویر، دریافت ابعاد و فرمت.

       توابع مهم

  • Image.open()
  • Image.save()
  • Image.show()
  • Image.new()
  • تمرین کلاسی:  باز کردن یک عکس و ذخیره نسخه‌ای جدید از آن و چاپ کردن ابعاد (عرض و ارتفاع) آن در خروجی.
  • تکلیف: یک اسکریپت بنویسید که یک تصویر را باز کرده، نام فایل را چاپ کند و یک نسخه کپی با نام جدید ذخیره کند.
  •  

جلسه ۲: مدیریت حالت‌های رنگی (Color Modes)

  • هدف: درک تفاوت رنگ‌ها (RGB vs Grayscale) و شفافیت (Alpha).
  • مباحث: تبدیل رنگ، مفهوم کانال آلفا، جداسازی کانال‌های R، G، B.

         توابع مهم

  • image.size()
  • image.mode()
  • image.format()
  • Image.convert()
  • تمرین کلاسی: تبدیل یک عکس رنگی به خاکستری و ذخیره آن.
  • تکلیف: یک عکس را باز کنید، کانال قرمز (Red) را جدا کنید و آن را به صورت یک تصویر سیاه و سفید ذخیره کنید.

جلسه ۳: مهندسی ابعاد (Resize & Crop)

  • هدف: یادگیری تغییر اندازه و برش ناحیه‌های خاص.
  • مباحث: resize با متدهای مختلف (LANCZOS)، crop با مختصات، rotate و چرخش.

توابع مهم

  • Image.resize()
  • Image.crop()
  • Image.rotate()
  • Image.split()
  • Image.merge()
  • Image.convert()
  • تمرین کلاسی: برش کردن یک مربع از وسط یک عکس و تغییر اندازه آن به ۵۰۰x۵۰۰.  ساخت نسخه کوچک‌تر از یک عکس و جدا کردن بخشی از تصویر
  • تکلیف: یک عکس را بچرخانید (۴۵ درجه) و سپس آن را به گونه‌ای برش بزنید که در کادر قرار بگیرد.

🟡 هفته دوم:

جلسه ۴: جادوی بهبود تصویر (Enhancement)

  • هدف: اصلاح خودکار نور و رنگ تصاویر ضعیف.
  • مباحث: تنظیم Brightness (روشنایی)، Contrast (کنتراست)، Color (غلظت رنگ) و Sharpness (وضوح).

توابع مهم

  • ImageEnhance.Brightness()
  • ImageEnhance.Contrast()
  • ImageEnhance.Color()
  • ImageEnhance.Sharpness()
  • تمرین کلاسی: یک عکس تیره را با استفاده از Brightness روشن کنید.  ساخت ۴ نسخه مختلف از یک تصویر با تنظیمات متفاوت
  • تکلیف: یک عکس بسیار بی‌رنگ (Black & White) را بگیرید و با افزایش Color و Contrast سعی کنید آن را زنده کنید.

جلسه ۵: دنیای فیلترها (Filtering)

  • هدف: اعمال افکت‌های هنری و فیلترهای مهندسی.
  • مباحث: فیلترهای Blur (محو کردن)، Sharpen (تیز کردن)، Contour (خطوط محیطی) و Detail.

توابع مهم

  • Image.filter()
  • ImageFilter.BLUR()
  • ImageFilter.GaussianBlur()
  • ImageFilter.SHARPEN()
  • ImageFilter.EDGE_ENHANCE()
  • ImageFilter.DETAIL()
  • تمرین کلاسی: اعمال فیلتر GaussianBlur روی یک تصویر. اعمال چند فیلتر روی یک عکس و مقایسه نتیجه
  • تکلیف: یک عکس را با فیلتر DETAIL تیز کنید و سپس با فیلتر BLUR محو کنید؛ نتیجه را مقایسه کنید.

جلسه ۶: هنر ترسیم و گرافیک (Drawing)

  • هدف: اضافه کردن المان‌های گرافیکی به عکس.
  • مباحث: رسم خط، مستطیل، دایره و چندضلعی با ImageDraw.

توابع مهم

  • ImageDraw.Draw()
  • draw.line()
  • draw.rectangle()
  • draw.ellipse()
  • draw.text()
  • ImageFont.truetype()
  • تمرین کلاسی: رسم یک کادر قرمز دور وسط یک تصویر. ساخت یک تصویر حاوی متن و کادر و دایره
  • تکلیف: یک تصویر سفید ایجاد کنید و روی آن یک خانه ساده (با مربع و مثلث) رسم کنید.

🟠 هفته سوم:

جلسه ۷: تایپوگرافی در تصویر (Text & Fonts)

  • هدف: نوشتن متن‌های زیبا روی تصاویر.
  • مباحث: استفاده از ImageFont ،بارگذاری فونت‌های سیستم، تنظیم اندازه و رنگ متن.

توابع مهم

  • ImageFont.truetype()
  • تمرین کلاسی: نوشتن نام خودتان با رنگ آبی روی یک عکس.
  • تکلیف: یک تصویر “کارت پستال” بسازید؛ یک عکس پس‌زمینه انتخاب کنید و یک پیام تبریک با فونت متفاوت روی آن بنویسید. 

جلسه ۸: دستکاری مستقیم پیکسل‌ها (Pixel Manipulation)

  • هدف: درک عمیق از اینکه هر پیکسل چه عددی است.
  • مباحث: getpixel, putpixel, استفاده از load() برای سرعت بیشتر.

توابع مهم

  • Image.getpixel()
  • Image.putpixel()
  • Image.load()
  • تمرین کلاسی: خواندن رنگ یک نقطه خاص و چاپ کردن مقادیر RGB آن. سیاه و سفید کردن بخشی از تصویر تغییر رنگ چند پیکسل مشخص
  • تکلیف: یک اسکریپت بنویسید که تمام پیکسل‌های یک ناحیه خاص از تصویر را به رنگ سبز تغییر دهد.

جلسه ۹: آستانه‌بندی و تصاویر باینری (Thresholding)

  • هدف: تبدیل تصاویر به سیاه و سفید مطلق (فقط دو رنگ).
  • مباحث: مفهوم Threshold، استفاده از Image.point() برای نگاشت رنگ‌ها.

توابع مهم

  • Image.convert(‘L’)
  • Image.point()
  • تمرین کلاسی: تبدیل یک عکس به حالت باینری (سیاه و سفید مطلق).
  • تکلیف: یک تابع بنویسید که آستانه (Threshold) را از کاربر بگیرد و تصویر را بر اساس آن سیاه و سفید کند.

🔴 هفته چهارم:

جلسه ۱۰: ترکیب لایه‌ها و ماسک‌ها (Masking & Blending)

  • هدف: ادغام دو تصویر با استفاده از شفافیت.
  • مباحث: blend (ترکیب ساده)، composite (استفاده از ماسک)، alpha_composite.

توابع مهم

  • Image.blend()
  • Image.composite()
  • Image.alpha_composite()
  • Image.putalpha()
  • تمرین کلاسی: ترکیب دو تصویر با ۵۰٪ شفافیت.
  • تکلیف: یک لوگو را به صورت نیمه‌شفاف (Watermark) روی یک تصویر قرار دهید.

جلسه ۱۱: تحلیل داده‌های تصویر (Histogram)

  • هدف: درک ریاضی توزیع رنگ‌ها.
  • مباحث: محاسبه histogram ،تحلیل توزیع شدت نور.

توابع مهم

  • Image.histogram()
  • تمرین کلاسی: چاپ کردن هیستوگرام یک تصویر خاکستری. بررسی هیستوگرام یک عکس تیره و یک عکس روشن
  • تکلیف: بررسی کنید کدام تصویر در یک مجموعه، روشن‌تر است (با مقایسه میانگین هیستوگرام).

جلسه ۱۲: افکت‌های خاص و عملیات ریاضی (ImageChops)

  • هدف: استفاده از محاسبات ریاضی برای ایجاد افکت.
  • مباحث: ImageChops.difference (یافتن تفاوت)، add و multiply.

توابع مهم

  • multiply()
  • add()
  • subtract() 
  • تمرین کلاسی: پیدا کردن تفاوت بین دو تصویر مشابه. ساخت ۳ افکت مختلف روی یک تصویر
  • تکلیف: با استفاده از multiply دو تصویر را با هم ترکیب کنید تا یک افکت سایه ایجاد شود.

🟢 هفته پنجم:

جلسه ۱۳: اتوماسیون و پردازش دسته‌ای (Batch Processing)

  • هدف: کار با صدها عکس در چند ثانیه.
  • مباحث: کار با کتابخانه os ،پیمایش پوشه‌ها، اعمال یک تغییر روی همه عکس‌ها.

توابع مهم

  • os.listdir()
  • os.path.join()
  • Image.open()
  • Image.save()
  • تمرین کلاسی: تغییر اندازه تمام عکس‌های موجود در یک پوشه به صورت خودکار.
  • تکلیف: اسکریپتی بنویسید که تمام عکس‌های یک پوشه را سیاه و سفید کرده و در پوشه جدیدی ذخیره کند.

جلسه ۱۴: پروژه عملی (بخش اول: طراحی سیستم)

  • هدف: تبدیل نیاز کاربر به کد.
  • موضوع: طراحی یک “اپلیکیشن کوچک بهبود عکس”.

توابع مهم

  • Image.open()
  • Image.resize()
  • ImageEnhance.Brightness()
  • ImageEnhance.Contrast()
  • ImageEnhance.Sharpness()
  • Image.save()
  • تمرین: تعریف مراحل (Workflow): ابتدا Resize، سپس Contrast، سپس Watermark.و یک اسکریپت کامل برای بهبود خودکار تصاویر
  • تکلیف: نوشتن ساختار اصلی کد (بدون جزئیات کامل) و تست کردن هر مرحله جداگانه.

جلسه ۱۵: پروژه نهایی (بخش دوم: اجرا و ارائه)

  • هدف: تکمیل و نمایش پروژه.
  • موضوع: تکمیل پروژه هفته قبل.
  • خروجی نهایی: یک ابزار که یک عکس ضعیف می‌گیرد و خروجی با کیفیت، تغییر سایز داده شده و دارای واترمارک را تحویل می‌دهد.
  • ارائه: نمایش کد و نتیجه نهایی به کلاس.

🛠 ابزارهای مورد نیاز برای هنرجو:

    1. Python (نسخه 3.8 به بالا)
    2. کتابخانه Pillow
    3. کتابخانه os (پیش‌فرض پایتون)
    4. یک ویرایشگر کد (VS Code یا PyCharm)