برنامه نویسی ترم دوازدهم
| نام دوره آموزشی | زبان برنامه نویسی آموزشی | مدت | شهریه (ریال) |
|---|---|---|---|
| برنامه نویسی ترم دوازدهم | 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
خروجی عملی
- یک پروژه کامل با ورودی تصویر و خروجی قابل ارائه
تمرین/پروژه
- یک سیستم ساده برای شمارش اشیاء یا تشخیص شکلها بسازید