پردازش تصویر با پایتون: پیاده سازی با OpenCV

پردازش تصویر با پایتون: پیاده سازی با OpenCV
By Published On: آگوست 1, 2025Categories: مقالات برنامه نویسیLast Updated: آگوست 5, 20250 Comments on پردازش تصویر با پایتون: پیاده سازی با OpenCVViews: 98

چکیده مقاله:
پردازش تصویر با پایتون یکی از حوزه های جذاب و پرکاربرد در دنیای برنامه نویسی و هوش مصنوعی می باشد. با استفاده از کتابخانه های متنوعی مانند OpenCV، Pillow و scikit‑image، می توان انواع عملیات از جمله بهبود کیفیت تصاویر، تشخیص الگو، شناسایی چهره، و حتی انجام پروژه های پیچیده تر مانند بینایی ماشین و یادگیری عمیق را پیاده سازی کرد. پایتون به دلیل سادگی در کدنویسی و پشتیبانی وسیع جامعه توسعه دهندگان، بستری مناسب برای ورود به دنیای پردازش تصویر فراهم کرده است.

کاربردهای پردازش تصویر در حوزه های مختلفی مانند پزشکی، امنیت، رباتیک، صنایع خودروسازی و حتی سرگرمی ها به چشم می خورد. برای مثال، در حوزه پزشکی می توان از آن برای تشخیص خودکار تومورها در تصاویر رادیولوژی استفاده کرد و در حوزه امنیت، تشخیص چهره برای کنترل دسترسی به سیستم ها پیاده سازی می شود. ترکیب پردازش تصویر با یادگیری ماشین در پایتون امکان ایجاد سیستم های هوشمندی را فراهم می کند که می توانند داده های بصری را تحلیل کرده و تصمیم گیری های دقیقی انجام دهند.

پردازش تصویر با پایتون، فرآیندی است که با استفاده از الگوریتم های کامپیوتری به تحلیل و تغییر تصاویر دیجیتال می پردازد. این حوزه به طور گسترده در زمینه هایی همچون بینایی ماشین، تصویر برداری پزشکی، امنیت و هوش مصنوعی مورد استفاده قرار می گیرد. زبان برنامه نویسی پایتون با داشتن کتابخانه های قدرتمند، این فرآیند را بسیار ساده تر کرده است. به همین دلیل، پردازش تصویر با پایتون به یکی از ابزارهای ارزشمند برای پژوهشگران و توسعه دهندگان تبدیل شده است. کتابخانه OpenCV که مخفف Open Source Computer Vision می باشد، یکی از شناخته شده ترین ابزار ها برای این کار است که قابلیت های گسترده ای برای کار با تصاویر و ویدیو ها فراهم می کند. در این مقاله به بررسی برخی از تکنیک های پرکاربرد پردازش تصویر خواهیم پرداخت.

پردازش تصویر با پایتون

پردازش تصویر با پایتون

پردازش تصویر با استفاده از OpenCV

OpenCV کتابخانه ای در پایتون با ابزارهای متنوع برای پردازش تصویر

OpenCV کتابخانه ای در پایتون با ابزارهای متنوع برای پردازش تصویر

OpenCV یک کتابخانه متن باز برای بینایی کامپیوتری و پردازش تصویر است که از زبان های برنامه نویسی مختلفی از جمله پایتون، ++C و جاوا پشتیبانی می کند. این کتابخانه ابزارهای متنوعی برای دستکاری تصویر، استخراج ویژگی ها و شناسایی اشیاء فراهم می سازد. از آنجا که برای کار های بلادرنگ بهینه شده است، در پروژه های صنعتی، تحقیقاتی و دانشگاهی کاربرد فراوان دارد. در این بخش به بررسی عملیات مختلف در پردازش تصویر با استفاده از OpenCV می پردازیم. برای شروع از یک تصویر ورودی استفاده می کنیم.

تصویر ورودی به پایتون برای پردازش تصویر

تصویر ورودی به پایتون برای پردازش تصویر

1. تغییر اندازه تصویر (Image Resizing)

تغییر اندازه تصویر به معنای تغییر ابعاد یک تصویر است که می تواند شامل بزرگ کردن یا کوچک کردن اندازه آن باشد بدون آنکه محتوای آن دستخوش تغییر شود. این عملیات در بسیاری از پروژه های پردازش تصویر کاربرد دارد، به خصوص زمانی که تصویر باید در دستگاه های مختلف یا برای تحلیل های بعدی استفاده شود. در اینجا از تابع cv2.resize() استفاده می کنیم.

نمایش کپی در حافظه

توضیح کد:

  1. سه کتابخانه ضروری برای پردازش تصویر با پایتون را وارد می کنیم:
  •  cv2 برای کار با تصاویر کتابخانه (OpenCv)
  •  numpy برای انجام محاسبات عددی و کار با آرایه ها
  •  matplotlib.pyplot برای نمایش تصاویر به صورت بصری
  1. ابتدا تصویر با نام ‘webp’ بارگذاری می شود.
  2. سپس با استفاده از cvtColor فضای رنگی تصویر از BGR (که به صورت پیش‌فرض توسط OpenCV استفاده می شود) به RGB تبدیل می شود تا هنگام نمایش رنگ ها به درستی دیده شوند.
  3. دو فاکتور برای تغییر مقیاس تصویر مشخص می کنیم
  • 3 برای بزرگ ‌نمایی (زوم کردن)
  • 3/1 برای کوچک کردن تصویر
  1. تصویر با اندازه جدید بازسازی می شود:
  • resize: تابع اصلی برای تغییر اندازه تصویر
  • INTER_CUBIC: الگوریتمی با کیفیت بالا برای بزرگ‌نمایی
  1. تصویر کوچک می شود:
  • INTER_AREA: بهترین گزینه برای کاهش ابعاد تصویر
  1. سه تصویر کنار هم (در یک ردیف) در پنجره نمایش داده می شوند. اندازه کل شکل نیز مشخص شده است.
  2. در هر قسمت، یک تصویر با عنوان مناسب نشان داده می شود.
  3. str(image.shape) برای نمایش ابعاد تصویر در عنوان استفاده می شود. و سپس محور های x و y حذف می شوند.

در مجموع، این کد یکی از کاربردی ترین مثال ها در پردازش تصویر با پایتون می باشد که برای تغییر ابعاد تصویر استفاده می شود؛ چیزی که در بسیاری از پروژه های بینایی ماشین و یادگیری ماشین ضروری است.

نتیجه نهایی تغییر اندازه تصویر با پایتون

نتیجه نهایی تغییر اندازه تصویر با پایتون

یکی از قابلیت های کاربردی در پردازش تصویر با پایتون، همین امکان تغییر ابعاد با حفظ کیفیت تصویر می باشد که برای آموزش شبکه های عصبی و نمایش بهینه بسیار مفید است.

2. چرخش تصویر با استفاده از OpenCV

در پردازش تصویر با پایتون، چرخاندن تصویر یکی از عملیات های متداول هندسی می باشد. به کمک چرخش تصویر، می توان تصویر را به هر زاویه ای در جهت ساعتگرد یا پادساعتگرد چرخاند. برای این کار، باید ماتریس چرخش را مشخص کنیم که شامل نقطه چرخش، زاویه چرخش و ضریب مقیاس دهی است. در اینجا:

  • getRotationMatrix2D() : برای تولید ماتریس تبدیل استفاده می شود.
  • warpAffine() : چرخش را اعمال می کند.

زاویه مثبت باعث چرخش ساعتگرد تصویر می شود، در حالی که زاویه منفی آن را به صورت پاد ساعتگرد می چرخاند. ضریب مقیاس نیز اندازه تصویر را تغییر می دهد.

نمایش کپی در حافظه

در این کد:

  • ابتدا تصویر بارگذاری شده و از حالت BGR که فرمت پیش فرض OpenCV است به RGB تبدیل می شود.
  • مرکز تصویر برای اعمال چرخش محاسبه می گردد.
  • زاویه 30 درجه و مقیاس 1 به این معنی است که اندازه تصویر تغییری نخواهد کرد.
  • warpAffine چرخش را بر اساس ماتریس اعمال می کند.

سپس برای نمایش نتیجه:

نمایش کپی در حافظه

در این بخش، تصویر اصلی و تصویر چرخانده شده در کنار هم نمایش داده می شوند تا تفاوت آن ها در پردازش تصویر با پایتون به خوبی مشخص شود.

چرخاندن تصویر با پایتون

چرخاندن تصویر با پایتون

3. جابجایی تصویر (Image Translation)

جابجایی تصویر فرآیند انتقال تصویر از یک موقعیت به موقعیت دیگر در یک چارچوب مرجع مشخص است. این تغییر مکان می تواند در راستای محور x (حرکت افقی) یا محور y (حرکت عمودی) انجام شود، بدون این که محتوا یا جهت تصویر تغییر کند.

در اینجا:

  • warpAffine(): تصویر را بر اساس مقادیر انتقال تغییر مکان می دهد.
  • tx, ty: مقدار حرکت تصویر در محورهای x و y هستند.
نمایش کپی در حافظه

این کد تصویر را به اندازه 100 پیکسل به راست و 70 پیکسل به پایین منتقل می کند.

نمایش نتایج:

نمایش کپی در حافظه

جابجایی تصویر یکی از روش های پایه ای در پردازش تصویر با پایتون محسوب می شود، به ویژه زمانی که بخواهیم تصویر را در جای خاصی از فریم قرار دهیم.

نتیجه انتقال تصویر با پایتون

نتیجه انتقال تصویر با پایتون

4. تغییر شکل تصویر با روش Shearing (برش زاویه دار)

Shearing یا برش زاویه دار یکی از تبدیلات هندسی در پردازش تصویر می باشد که باعث کج شدن یا کشیدگی تصویر در امتداد محور افقی یا عمودی می شود. در این روش، تصویر طوری تغییر شکل می یابد که انگار از زاویه ای خاص در حال کشیده شدن یا فشرده شدن است، اما بدون اینکه مساحت یا شکل کلی تصویر تغییر کند. این تکنیک در مواردی استفاده می شود که نیاز است تصویر حالتی مورب و شیب دار پیدا کند.

در این روش دو پارامتر shear_x و shear_y میزان کج شدن تصویر در راستای محور افقی و عمودی را کنترل می کنند. برای اعمال این تغییر، از تابع cv2.warpAffine() استفاده می شود که وظیفه اعمال ماتریس تبدیل به تصویر اصلی را بر عهده دارد.

کد پایتون و توضیح خط به خط:

نمایش کپی در حافظه

در ابتدا کتابخانه های مورد نیاز را وارد می کنیم. cv2 برای خواندن و تغییر تصویر، numpy برای محاسبات ماتریسی و matplotlib برای نمایش تصویر استفاده می شود.

نمایش کپی در حافظه

در این بخش، تصویر از فایل خوانده می شود. چون OpenCV به طور پیش فرض تصویر را با فرمت BGR می خواند، آن را به RGB تبدیل می کنیم تا هنگام نمایش، رنگ ها به صورت طبیعی دیده شوند. سپس عرض و ارتفاع تصویر را برای استفاده در مراحل بعد ذخیره می کنیم.

نمایش کپی در حافظه

در این قسمت، مقادیر برش افقی (shearX) و برش عمودی (shearY) تعیین شده اند. سپس با استفاده از این مقادیر، یک ماتریس تبدیل ساخته می شود که برای تغییر شکل تصویر استفاده می گردد.

نمایش کپی در حافظه

اینجا ماتریس تبدیل به تصویر اعمال می شود و نتیجه آن تصویری کج شده (شیب دار) خواهد بود.

نمایش کپی در حافظه

در نهایت، با استفاده از matplotlib هر دو تصویر اصلی و تغییر یافته به صورت کنار هم نمایش داده می شوند تا کاربر بتواند تفاوت را به وضوح مشاهده کند.

در بسیاری از کاربردهای پیشرفته مانند یادگیری ماشین، داده های تصویری نیاز به تغییر شکل دارند. در اینجا پردازش تصویر با پایتون امکان اعمال چنین تبدیلات هندسی را به سادگی فراهم کرده است.

تغییر شکل تصویر با پایتون

تغییر شکل تصویر با پایتون

5. نرمال سازی تصویر یا Image Normalization

نرمال سازی تصویر به معنای تغییر مقادیر پیکسلی تصویر به یک بازه مشخص می باشد، که اغلب بین ۰ تا ۱ تنظیم می شود. این کار باعث می شود عملیات پردازش بعدی مانند تشخیص ویژگی ها، بهینه تر و دقیق تر انجام شود. به طور خاص، نرمال سازی اختلافات نوری موجود در تصاویر را کاهش می دهد و مقایسه و تحلیل آن ها را ساده تر می کند.

در این روش از تابع  cv2.normalize() برای نرمال کردن مقادیر پیکسل ها استفاده می شود. همچنین cv2.NORM_MINMAX مقادیر را به بازه ۰ تا ۱ تبدیل می کند. در پایان نیز با استفاده از cv2.merge() کانال های نرمال شده تصویر دوباره با هم ترکیب می شوند.

کد پایتون و توضیح خط به خط:

نمایش کپی در حافظه

وارد کردن کتابخانه ها مانند قبل انجام می شود.

نمایش کپی در حافظه

در این بخش، تصویر خوانده شده و به RGB تبدیل می شود. سپس کانال های آبی (blue)، سبز (green) و قرمز (red) به صورت جداگانه از هم جدا می شوند تا هر کدام به صورت مستقل نرمال سازی شوند.

نمایش کپی در حافظه

در اینجا کانال های رنگی به نوع  float تبدیل می شوند و با استفاده از تابع نرمال سازی، مقادیر پیکسلی هر کانال به بازه ۰ تا ۱ تبدیل می شوند. این گام بسیار مهمی در پردازش تصویر با پایتون محسوب می شود، زیرا بسیاری از الگوریتم های یادگیری عمیق نیاز دارند که ورودی ها در همین بازه باشند.

نمایش کپی در حافظه

در این خط کانال های نرمال شده دوباره با هم ترکیب می شوند تا تصویر کامل نرمال شده به دست آید. همچنین مقدار کانال آبی تصویر نهایی به صورت ماتریس چاپ می شود.

نمایش کپی در حافظه

در نهایت تصویر نرمال شده با استفاده از matplotlib نمایش داده می شود.

مقدار پیکسلی  0.0745098 نشان دهنده این است که مقدار پیکسلی اصلی حدودا برابر با ۱۹ بوده (۰.۰۷۴۵۰۹۸ ضرب در ۲۵۵). این مقدار نشان دهنده روشنایی کم ولی نه کاملا تاریک است. مقدار  0.00392157 نیز معادل مقدار پیکسلی ۱ می باشد که تقریبا سیاه کامل یا بدون رنگ در نظر گرفته می شود.

همان طور که مشاهده می شود، در پردازش تصویر با پایتون امکان نرمال سازی دقیق تصاویر وجود دارد و این گام در بسیاری از پروژه های بینایی ماشین ضروری و حیاتی است.

نمایش کپی در حافظه
نرمال سازی تصویر با پایتون

نرمال سازی تصویر با پایتون

6. تشخیص لبه های تصویر یا Edge Detection

تشخیص لبه ها یکی از مهم ترین مراحل در پردازش تصویر می باشد. این فرآیند برای یافتن مرز اشیای مختلف موجود در تصویر به کار می رود. لبه ها، مکان هایی هستند که شدت نور به سرعت تغییر می کند. یکی از متداول ترین روش های تشخیص لبه، الگوریتم Canny می باشد که لبه های تیز و مشخص را استخراج می کند.

مراحل اصلی تشخیص لبه با الگوریتم Canny عبارتند از:

  • فیلتر کردن نویز با استفاده از GaussianBlur()
  • محاسبه گرادیان تصویر با Sobel()
  • تشخیص نهایی لبه ها با Canny() که شامل آستانه گذاری و نازک سازی لبه ها می باشد.

کد پایتون و توضیح:

نمایش کپی در حافظه

در ابتدای کد، کتابخانه های لازم برای پردازش تصویر و نمایش نتایج وارد می شوند.

نمایش کپی در حافظه

در این بخش تصویر خوانده شده و به RGB تبدیل می شود. سپس با استفاده از تابع  cv2.Canny() لبه های تصویر شناسایی می شوند. آستانه پایین ۱۰۰ و آستانه بالا ۷۰۰ تعیین کننده حساسیت الگوریتم به تغییرات شدت نور هستند.

نمایش کپی در حافظه

در نهایت تصویر اصلی و تصویر حاوی لبه ها به صورت مقایسه ای نمایش داده می شوند.

در کاربردهای بینایی ماشین مانند تشخیص اشیا یا تقسیم بندی تصاویر، تشخیص لبه نقش بسیار مهمی دارد. در این میان، استفاده از تکنیک های مختلف پردازش تصویر با پایتون به دلیل سادگی و قدرت بالا بسیار رایج شده است.

تشخیص لبه های تصویر با پایتون

تشخیص لبه های تصویر با پایتون

7. محو کردن تصویر یا Blurring

محو کردن تصویر فرآیندی است که باعث کاهش جزئیات تصویر می شود. این کار با میانگین گیری از مقادیر پیکسل های اطراف انجام می شود و می تواند به کاهش نویز، ساده سازی تصویر و آماده سازی آن برای پردازش های بعدی کمک کند.

در پایتون و کتابخانه OpenCV سه روش اصلی برای محو کردن تصویر وجود دارد:

  • GaussianBlur() : اعمال محو کردن به کمک هسته گاوسی
  • medianBlur() : استفاده از مقدار میانه در ناحیه پیکسلی اطراف
  • bilateralFilter() : محو کردن تصویر بدون آسیب رساندن به لبه ها

کد و توضیح:

نمایش کپی در حافظه

وارد کردن کتابخانه ها.

نمایش کپی در حافظه

ابتدا تصویر اصلی خوانده و به RGB تبدیل می شود. سپس با استفاده از فیلتر گاوسی محو می شود. اندازه هسته فیلتر (۳×۳) انتخاب شده که تأثیر متوسطی در محو کردن دارد.

نمایش کپی در حافظه

ابتدا تصویر اصلی خوانده و به RGB تبدیل می شود. سپس با استفاده از فیلتر گاوسی محو می شود. اندازه هسته فیلتر (۳×۳) انتخاب شده که تأثیر متوسطی در محو کردن دارد.

نمایش کپی در حافظه

در این قسمت نیز نمایش تصویری از تصویر اصلی و تصویر محو شده انجام می شود.

در بسیاری از پروژه ها، محو کردن تصویر پیش نیازی برای حذف نویز و تشخیص بهتر لبه ها می باشد. به ویژه در پردازش تصویر با پایتون، این مرحله به عنوان یک گام پایه ای بسیار مؤثر می باشد که بر کیفیت مراحل بعدی تأثیر مستقیم دارد.

محو کردن تصویر Blurring با پایتون

محو کردن تصویر Blurring با پایتون

8. پردازش مورفولوژیکی تصویر

پردازش مورفولوژیکی بر پایه شکل و ساختار اجسام موجود در تصویر عمل می کند. هدف اصلی آن تغییر ویژگی های هندسی تصویر مانند گسترش یا کوچک سازی مرزها، حذف نویزها و پر کردن سوراخ های کوچک می باشد. این عملیات با استفاده از هسته هایی کوچک به نام kernel انجام می شود.

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

  • dilate(): بزرگ کردن مرزهای اشیا
  • erode(): کوچک کردن مرزها
  • morphologyEx() همراه با cv2.MORPH_OPEN: حذف نویزهای کوچک
  • morphologyEx() همراه با cv2.MORPH_CLOSE: پر کردن حفره ها

کد و توضیح:

نمایش کپی در حافظه

در اینجا تصویر خوانده شده و به خاکستری تبدیل می شود تا عملیات مورفولوژیکی تنها بر اساس شدت روشنایی انجام گیرد. سپس یک هسته ۳×۳ از عدد ۱ ساخته می شود.

نمایش کپی در حافظه

در این بخش، چهار عملیات مختلف مورفولوژیکی اجرا می شود dilate. مرزها را گسترش می دهد،  erode آنها را کوچک می کند، open  نویزها را حذف می کند و  close سوراخ های کوچک را پر می کند.

نمایش کپی در حافظه

در این مرحله، نتیجه تمام عملیات ها به صورت چهار تصویر نمایش داده می شود.

پردازش مورفولوژیکی یکی از ارکان اصلی در پیش پردازش تصاویر برای کاربردهای صنعتی، پزشکی و یادگیری ماشین محسوب می شود. به کارگیری دقیق این تکنیک ها با استفاده از پردازش تصویر با پایتون می تواند کیفیت تشخیص اشیا و آنالیز تصویر را تا حد زیادی افزایش دهد.

پردازش مورفولوژیکی تصویر با پایتون

پردازش مورفولوژیکی تصویر با پایتون

در این مقاله، با استفاده از کتابخانه OpenCV در پایتون، تکنیک های مهمی از جمله نرمال سازی، تشخیص لبه، محو کردن و عملیات مورفولوژیکی بررسی شد. این روش ها، پایه های اصلی در بسیاری از پروژه های مرتبط با پردازش تصویر می باشند. هرچند OpenCV ابزار قدرتمندی برای این پردازش ها می باشد، اما ترکیب آن با روش های یادگیری عمیق مانند شبکه های عصبی پیچشی (CNN) می تواند دقت و کارایی پردازش تصویر با پایتون را به سطح بسیار بالاتری برساند.

اشتراک گذاری این محتوا، پلتفرم خود را انتخاب کنید!
مطالب مرتبط دیگر :

  • روش همبستگی اسپیرمن (Spearman Correlation)
روش همبستگی اسپیرمن (Spearman Correlation)

آگوست 20, 2025|0 Comments

چکیده مقاله: ضریب همبستگی اسپیرمن یکی از روش های آماری غیرپارامتری برای سنجش ارتباط بین دو متغیر است. این روش زمانی کاربرد دارد که داده ها از نوع رتبه ای باشند یا زمانی که [...]

  • کتابخانه ها و Toolbox های معروف زبان برنامه نویسی متلب
کتابخانه ها و Toolbox های معروف زبان برنامه نویسی متلب

آگوست 17, 2025|0 Comments

چکیده مقاله: کتابخانه ها و Toolbox های معروف زبان برنامه نویسی متلب مجموعه ای از ابزارها و توابع آماده هستند که برای ساده سازی فرآیند حل مسائل پیچیده در حوزه های مختلف علمی و [...]

  • بهترین هوش مصنوعی برای ساخت ویدیو در سال 2025
بهترین هوش مصنوعی برای ساخت ویدیو در سال 2025

آگوست 8, 2025|0 Comments

چکیده مقاله: بهترین هوش مصنوعی برای ساخت ویدیو امروزه به یکی از پرجستجوترین عبارات در حوزه تولید محتوا و بازاریابی دیجیتال تبدیل شده است. با پیشرفت سریع فناوری، ابزارهای متعددی مبتنی بر هوش مصنوعی [...]

  • بهترین زبان برنامه نویسی پردازش تصویر
بهترین زبان برنامه نویسی پردازش تصویر

آگوست 6, 2025|0 Comments

چکیده مقاله: بهترین زبان برنامه نویسی پردازش تصویر موضوعی است که بسیاری از دانشجویان، پژوهشگران و برنامه نویسان به دنبال آن هستند. پردازش تصویر یکی از شاخه های مهم هوش مصنوعی و علوم کامپیوتر [...]

  • بهترین هوش مصنوعی برای تولید محتوا
بهترین هوش مصنوعی برای تولید محتوا

آگوست 6, 2025|0 Comments

چکیده مقاله: بهترین هوش مصنوعی برای تولید محتوا امروزه به یکی از پرکاربردترین ابزارهای دنیای دیجیتال تبدیل شده است. با رشد روزافزون اینترنت و افزایش رقابت در زمینه بازاریابی آنلاین، تولید محتوای جذاب و [...]