برنامه نویسی ترم یازدهم
| نام دوره آموزشی | زبان برنامه نویسی آموزشی | مدت | شهریه (ریال) |
|---|---|---|---|
| برنامه نویسی ترم یازدهم | Pillow | 15 جلسه (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.و یک اسکریپت کامل برای بهبود خودکار تصاویر
- تکلیف: نوشتن ساختار اصلی کد (بدون جزئیات کامل) و تست کردن هر مرحله جداگانه.
جلسه ۱۵: پروژه نهایی (بخش دوم: اجرا و ارائه)
- هدف: تکمیل و نمایش پروژه.
- موضوع: تکمیل پروژه هفته قبل.
- خروجی نهایی: یک ابزار که یک عکس ضعیف میگیرد و خروجی با کیفیت، تغییر سایز داده شده و دارای واترمارک را تحویل میدهد.
- ارائه: نمایش کد و نتیجه نهایی به کلاس.
🛠 ابزارهای مورد نیاز برای هنرجو:
- Python (نسخه 3.8 به بالا)
- کتابخانه Pillow
- کتابخانه os (پیشفرض پایتون)
- یک ویرایشگر کد (VS Code یا PyCharm)