عناوین

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

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

رئوس مطالب

جلسه ۱: آشنایی با OpenCV و راه‌اندازی محیط

هدف

  • نصب و راه‌اندازی opencv-python
  • اجرای اولین برنامه
  • آشنایی با خواندن و نمایش تصویر

مباحث

  • معرفی OpenCV
  • ساختار تصویر در پایتون
  • خواندن تصویر از فایل
  • نمایش تصویر و بستن پنجره‌ها

توابع مهم

  • python
  • cv2.imread()
  • cv2.imshow()
  • cv2.waitKey()
  • cv2.destroyAllWindows()

خروجی عملی

  • خواندن یک عکس و نمایش آن

تمرین

  • ابعاد تصویر را چاپ کنید
  • تصویر را به صورت رنگی و خاکستری نمایش دهید

جلسه ۲: کار با تصویر به عنوان آرایه

هدف

  • درک اینکه تصویر یک آرایه NumPy است
  • کار با ابعاد، نوع داده و برش

مباحث

  • shape، dtype، size
  • برش تصویر با slicing
  • ناحیه‌ی مورد نظر ROI
  • کپی و ارجاع

توابع مهم

  • image.shape
  • image.dtype
  • image.size
  • slicing در NumPy

خروجی عملی

  • جدا کردن یک ناحیه از تصویر و ذخیره آن

تمرین

  • ROI وسط تصویر را جدا کنید
  • روی ROI یک مستطیل رسم کنید

جلسه ۳: تبدیل رنگ‌ها و فضاهای رنگی

هدف

  • آشنایی با RGB/BGR/Gray/HSV

مباحث

  • تفاوت BGR و RGB
  • تبدیل به خاکستری
  • تبدیل به HSV
  • کاربرد هر فضای رنگی

توابع مهم

  • cv2.cvtColor()
  • cv2.COLOR_BGR2RGB
  • cv2.COLOR_BGR2GRAY
  • cv2.COLOR_BGR2HSV

خروجی عملی

  • نمایش یک تصویر در سه فضای رنگی مختلف

تمرین

  • تصویر را به Gray و HSV تبدیل و ذخیره کنید

جلسه ۴: رسم اشکال و نوشتن متن روی تصویر

هدف

  • اضافه کردن مستطیل، خط، دایره و متن

مباحث

  • رسم برای Annotation
  • نمایش مختصات و برچسب‌گذاری
  • کاربرد در دیباگ و پروژه‌ها

توابع مهم

  • cv2.line()
  • cv2.rectangle()
  • cv2.circle()
  • cv2.putText()
  • cv2.ellipse()

خروجی عملی

  • مشخص کردن یک شیء روی تصویر با کادر و متن

تمرین

  • یک تصویر را با چند شکل و متن تزئین/نشانه‌گذاری کنید

جلسه ۵: تنظیم روشنایی، کنتراست و گاما

هدف

  • بهبود کیفیت تصویر و اصلاح نور

مباحث

  • Brightness
  • Contrast
  • Gamma correction
  • تغییر شدت پیکسل

توابع مهم

  • cv2.convertScaleAbs()
  • cv2.LUT()

خروجی عملی

  • ساخت نسخه روشن‌تر و کنتراست‌دارتر از یک تصویر

تمرین

  • چند مقدار مختلف برای آلفا و بتا امتحان کنید

جلسه ۶: فیلترهای نرم‌کننده و حذف نویز

هدف

  • کاهش نویز و آماده‌سازی برای پردازش‌های بعدی

مباحث

  • میانگین‌گیری
  • Gaussian blur
  • Median blur
  • اثر هر فیلتر

توابع مهم

  • cv2.blur()
  • cv2.GaussianBlur()
  • cv2.medianBlur()

خروجی عملی

  • مقایسه ۳ نوع blur روی یک تصویر

تمرین

  • روی تصویر پرنویز، بهترین فیلتر را انتخاب کنید

جلسه ۷: آستانه‌بندی و تبدیل به تصویر باینری

هدف

  • جداسازی نواحی مهم از پس‌زمینه

مباحث

  • Threshold ساده
  • Binary / Binary inverse
  • Adaptive threshold
  • کاربرد در اسناد و اشیاء

توابع مهم

  • cv2.threshold()
  • cv2.adaptiveThreshold()
  • خروجی عملی
  • تبدیل یک تصویر خاکستری به باینری

تمرین

  • روی چند تصویر متفاوت threshold مناسب پیدا کنید

جلسه ۸: تشخیص لبه‌ها

هدف

  • استخراج مرز اشیا و ساختارها

مباحث

  • مفهوم لبه
  • Sobel
  • Laplacian
  • Canny

توابع مهم

  • cv2.Sobel()
  • cv2.Laplacian()
  • cv2.Canny()

خروجی عملی

  • تشخیص لبه‌های یک تصویر با Canny

تمرین

  • تاثیر تغییر thresholdهای Canny را بررسی کنید

جلسه ۹: کانتور و تحلیل شکل اشیا

هدف

  • پیدا کردن مرز اشیاء و اندازه‌گیری آنها

مباحث

  • کانتور چیست؟
  • پیدا کردن کانتور
  • رسم کانتور
  • مساحت، محیط و مرکز جرم

توابع مهم

  • cv2.findContours()
  • cv2.drawContours()
  • cv2.contourArea()
  • cv2.arcLength()
  • cv2.moments()

خروجی عملی

  • شمارش اشیاء موجود در یک تصویر

تمرین

  • فقط کانتورهایی با مساحت بیشتر از مقدار مشخص رسم کنید

جلسه ۱۰: هیستوگرام و تحلیل توزیع روشنایی

هدف

  • بررسی توزیع شدت پیکسل‌ها

مباحث

  • هیستوگرام چیست؟
  • هیستوگرام خاکستری
  • هیستوگرام رنگی
  • کاربرد در تحلیل تصویر

توابع مهم

  • cv2.calcHist()
  • cv2.normalize()

خروجی عملی

  • رسم هیستوگرام یک تصویر

تمرین

  • هیستوگرام دو تصویر روشن و تاریک را مقایسه کنید

جلسه ۱۱: عملیات مورفولوژیکی

هدف

  • تمیز کردن تصویر باینری و اصلاح ساختارها

مباحث

  • Erosion
  • Dilation
  • Opening
  • Closing
  • کاربرد در حذف نویز و پر کردن حفره

توابع مهم                                       

  • cv2.getStructuringElement()
  • cv2.erode()
  • cv2.dilate()
  • cv2.morphologyEx()

خروجی عملی

  • تمیز کردن یک تصویر باینری با عملیات مورفولوژی

تمرین

  • اثر kernelهای مختلف را مقایسه کنید

جلسه ۱۲: کار با ویدئو

هدف

  • خواندن و پردازش فریم‌به‌فریم ویدئو

مباحث

  • ویدئو به عنوان جریان فریم
  • گرفتن فریم
  • نمایش زنده
  • ذخیره خروجی ویدئو

توابع مهم

  • cv2.VideoCapture()
  • cv2.VideoWriter()
  • cv2.VideoWriter_fourcc()

خروجی عملی

  • خواندن ویدئو و اعمال یک فیلتر روی آن

تمرین

  • روی هر فریم Canny یا Gray اعمال کنید

جلسه ۱۳: تشخیص چهره با مدل‌های آماده OpenCV

هدف

  • استفاده از classifier آماده

مباحث

  • Haar Cascade
  • تشخیص چهره در تصویر و ویدئو
  • رسم کادر دور چهره

توابع مهم

  • cv2.CascadeClassifier()
  • detectMultiScale()

خروجی عملی

  • تشخیص چهره در یک عکس

تمرین

  • تشخیص چهره در ویدئو زنده یا فایل ویدیویی

جلسه ۱۴: مقدمه‌ای بر تشخیص الگو و تطبیق تصویر

هدف

  • پیدا کردن یک الگو در تصویر

مباحث

  • Template Matching
  • تشخیص محل نمونه مشابه
  • کاربرد در جست‌وجوی قطعه، لوگو، آیکن و …

توابع مهم

  • cv2.matchTemplate()
  • cv2.minMaxLoc()
  • خروجی عملی
  • یافتن یک template در تصویر

تمرین

  • برای چند روش تطبیق، نتیجه را مقایسه کنید

جلسه ۱۵: پروژه نهایی و جمع‌بندی

هدف

  • ترکیب همه مطالب در یک پروژه کامل

پروژه‌های پیشنهادی

  • شمارش اشیاء
  • تشخیص چهره
  • تشخیص آلودگی/نقاط/نقص در تصویر
  • تشخیص لبه و کانتور در اسناد یا تصاویر صنعتی

توابع مهم

ترکیبی از:

  • cv2.cvtColor
  • cv2.GaussianBlur
  • cv2.threshold
  • cv2.morphologyEx
  • cv2.findContours
  • cv2.drawContours
  • cv2.putText

خروجی عملی

  • یک پروژه کامل با ورودی تصویر و خروجی قابل ارائه

تمرین/پروژه

  • یک سیستم ساده برای شمارش اشیاء یا تشخیص شکل‌ها بسازید