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

ماژول cv2و NumPy را وارد میکنیم و تصویر را میخوانیم:
import cv2
from matplotlib import pyplot as plt
matplotlib inline%
img = cv2.imread(“BarmanOCR-Rotated.jpg”)
تصویر را به تصویر خاکستری تبدیل میکنیم:
gray_img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
تصویر خاکستری را توسط متد bitwise_not معکوس مینماییم:
gray_img=cv2.bitwise_not(gray_img)
مختصات x و y از پیکسلهایی که بزرگتر از صفر هستند را توسط متد column_stack از NumPy انتخاب میکنیم:
coordinates = np.column_stack(np.where(gray_img > 0))
حال ما زاویه چرخش را باید محاسبه کنیم. ما از متد minAreaRect() از ماژول cv2 استفاده خواهیم کرد که طیف زاویهای بین -۹۰ تا ۰ درجه (شامل ۰ نیست) را بازخواهد گرداند.
ang=cv2.minAreaRect(coordinates)[-1]
زاویه چرخش محدوده متن درون متغیر ang ذخیره خواهد شد
:if ang<-45
ang=-(90+ang)
:else
ang=-ang
محاسبه مرکز محدوده متن:
height, width = img.shape[:2]
center_img = (width / 2, height / 2)
حال زاویه چرخش متن را داریم. توسط متد ()getRotationMatrix2D ماتریس چرخش را به دست خواهیم آورد و با استفاده از متد ()wrapAffine چرخش را با زاویه مشخص انجام میدهیم.
=rotationMatrix
cv2.getRotationMatrix2D(center_img, ang, 1.0)
,rotated_img = cv2.warpAffine(img
rotationMatrix, (width, height), borderMode
( cv2.BORDER_REFLECT=
نمایش تصویر چرخش دادهشده:
cv2.imshow(“Rotated Image”, rotated_img)
cv2.waitKey(0)

۲ـ کاهش نویز
بهمنظور کاهش نویز تصویر، OpenCV دارای متدهای زیر است:
۱.متد ()fastNlMeansDenoising: حذف نویز از تصویر خاکستری
۲.متد() fastNlMeansDenoisingColored: حذف نویز از تصویر رنگی
۳.متد() fastNlMeansDenoisingMulti: حذف نویز از فریم تصاویر خاکستری (فیلم در مقیاس خاکستری)
۴.متد ()fastNlMeansDenoisingColoredMulti: مشابه مورد ۳ اما این بار برای تصاویر رنگی
بیایید از متد fastNlMeansDenoisingColoredMulti در مثالمان استفاده کنیم:
۲ـ۱ استفاده از فیلتر حذف نویز
ماژول cv2 را وارد کنید و تصویر را بخوانید:
import cv2
import numpy as n
from matplotlib import pyplot as plt
%matplotlib inline
فیلتر حذف نویز را به تصویر اعمال میکنیم که تبع آن تصویر اصلی (src)، مقصد، قدرت فیلتر، مقدار تصویر برای حذف نویز رنگی (معمولاً برابر با قدرت فیلتر یا ۱۰)، اندازه تمپلیت در پیکسل بهمنظور محاسبه وزنها که همیشه باید فرد باشد (وزن پیشنهادشده ، ۷ است) و اندازه ویندوز در پیکسل برای محاسبه میانگین پیکسل دادهشده.
=result
cv2.fastNlMeansDenoisingColored(img,None,20,10,7,21)
نمایش تصویر اصلی و حذف نویز شده:
,plt.imshow(cv2.cvtColor(result
((cv2.COLOR_BGR2RGB
()plt.show
,plt.imshow(cv2.cvtColor(img
((cv2.COLOR_BGR2RGB
()plt.show
خروجی مانند زیر خواهید بود:

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