معرفی ۳ ماژول پایتون برای پردازش تصاویر – قسمت هفتم
موسسه پایا پروژه به عنوان متصدی انجام پروژه های پردازش تصویر با پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی متلب مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
در آموزش پردازش تصویر با پایتون (Python) توسط OpenCV، شما خواهید آموخت چطور از طریق کتابخانه OpenCV در پایتون (Python)، الگوریتمهای پردازش تصویر را اجرا کنید. در این مقاله شما نحوه نصب، اجرا و فعالیت با این ماژول پر کاربرد رو یاد میگیرید.
۱ـ نصب opencv
بهمنظور نصب OpenCV بر روی سیستمتان، کد pip زیر را اجرا نمایید:
pip install opencv-python
حالا OpenCV با موفقیت نصبشده است و ما آمادهایم. بیایید کمی پردازش تصویر کار کنیم!
۲ـ چرخش تصویر
۲ـ۱ وارد کردن کتابخونه ها
در ابتدا ماژول cv2 را در پایتون وارد کنید.
import cv2from matplotlib import pyplot as plt%matplotlib inline
۲ـ۲ خواندن تصویر
حال بهمنظور خواندن تصویر، توسط متد imread() از ماژول OpenCV، مسیر تصویر را مشخص کنید و مقدار تصویر را مانند زیر بخوانید:
img = cv2.imread(“ImageProcessingSample.jpg”,1)
تصویر حالا بهعنوان ماتریس ذخیرهشده و مقادیرش در سطرها و ستونهای درون img قابلدستیابی هستند.
در حقیقت اگر شما نوع img را بررسی کنید. با نتیجه زیر روبرو خواهید شد:
print(type(img))<class ‘numpy.ndarray’>
۲ـ۳ نمایش تصویر
این آرایه NumPy از پایتون است! به خاطر همین پردازش تصویر توسط OpenCV و پایتون بسیار آسان است. همیشه شما در حال کار با آرایههای Numpy هستید.
بهمنظور نمایش تصویر، شما میتوانید از متد imshow() از cv2 استفاده کنید.
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.show()
تابع waitkey وظیفه دارد تا پنجره را پس از تأخیر (بر اساس میلیثانیه) ببندد. در اینجا ما زمان را به صفر تغییر میدهیم که این بدان معنی است که پنجره تا زمانی که بهصورت دستی بسته شود؛ بازخواهد ماند.
۳ـ چرخش تصاویر
برای چرخش تصویر شما نیاز دارید تا عرض و طول تصویر را بدانید. چراکه به این مقادیر بعداً برای فرآیند چرخش نیاز دارید.
height, width = img.shape[0:2]
متد shape طول و عرض ماتریس تصویر را باز میگرداند. اگر شما دستور زیر را چاپ کنید.
img.shape[0:2]
با خروجی زیر روبرو خواهید شد:
خب! حال ما ماتریس تصویر خود را داریم و میخواهیم ماتریس چرخش را به دست آوریم. برای دستیابی به ماتریس چرخش برای پردازش تصویر با پایتون توسط OpenCV، ما از متد getRotationMatrix2D() از cv2 استفاده میکنیم. سینتکس getRotationMatrix2D() بهصورت زیر است:
cv2.getRotationMatrix2D(center, angle, scale)
در اینجا center، مرکز چرخش تصویر است، زاویه بر اساس درجه و scale، مقیاسی است که تصویر را بر روی صفحه گسترش میدهد.
برای دستیابی به ماتریس چرخش از تصویرمان در پایتون، کد به شکل زیر خواهد بود:
rotationMatrix = cv2.getRotationMatrix2D((width/2, height/2), 90, .5)
۳ـ۱ ماتریس چرخش
گام بعدی چرخش تصویر، استفاده از ماتریس چرخش است.
بهمنظور چرخش تصویر، ما متدی از cv2 به نام wrapAffine داریم که تصویر اصلی، ماتریس چرخش، عرض و طول را دریافت میکند.
rotatedImage = cv2.warpAffine(img, rotationMatrix, (width, height))
تصویر چرخش دادهشده در ماتریس rotatedImage قرار میگیرد. بهمنظور نمایش تصویر از تابع imshow() بهصورت زیر استفاده میگردد:
rotatedImage = cv2.warpAffine(img, rotationMatrix, (width, height)) plt.imshow(cv2.cvtColor(rotatedImage, cv2.COLOR_BGR2RGB)) plt.show()
بعد از اجرای کدهای بالا، شما خروجی زیر را خواهید داشت:
۴ـ جمع بندی
در این آموزش به معرفی و کار با تصاویر و چرخش اون ها پرداختیم و مثال هایی رو از توابع مختلف برای انجام این کار بیان کردیم. در قسمت های بعدی، به برش تصاویر و مثال های بیشتری از پردازش تصاویر با پایتون می پردازیم.