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

@ kale مهندس مکاترونیک | Pro Python Developer | AI Enthusiast

بالش کتابخانه تصویربرداری پایتون است که به صورت رایگان و منبع باز یک کتابخانه اضافی برای زبان برنامه نویسی Python است که پشتیبانی از باز کردن ، دستکاری و ذخیره در پسوندهای مختلف را اضافه می کند.

بیایید شروع کنیم

مهمترین کلاس در کتابخانه تصویربرداری پایتون کلاس تصویر است که در ماژول با همان نام تعریف شده است.

ما از open () به <استفاده می کنیم قوی> باز تصویر در فهرست محلی ما همانطور که در زیر نشان داده شده است ؛

>>> from PIL وارد کردن تصویر
>>> sample = Image.open ( ‘sample.jpg’ )

ساده است ، شما قبلاً تصویری با <بالش ، اکنون می توانید با آن کاری پردازش تصویر انجام دهید ، همچنین می توانید نوع تصویری را که بارگذاری کرده ایم بررسی کنید ؛

>>> نوع (نمونه)
<< span class = "hljs-class"> class PIL . JpegImagePlugin . JpegImageFile ‘>

می توانید ویژگی تصویر خود را مانند شکل ، اندازه و حالت رنگ مطابق شکل زیر مشاهده کنید

>>> قالب. نمونه
“JPEG”
>>> نمونه. اندازه
( 250 ، 283 )
>>> نمونه
‘RGB’

همچنین می توانید تصویری را که به تازگی خوانده اید را روی صفحه نمایش دهید ، با استفاده از روش نمایش

>>> sample.show ()

خروجی

تبدیل فرمت تصویر

پس از باز کردن تصویر ، کارتان تمام شد با کتابخانه بالش در یک قالب می توانید دوباره آن را در قالب های دیگر مانند از به png و موارد دیگر ذخیره کنید. p class = “paragraf”> به عنوان مثال ، بیایید سعی کنیم یک برنامه ساده Python بنویسیم تا تمام تصاویر را در فهرست پروژه خود که با فرمت jpg هستند به png تبدیل کنید قالب .

import os
سیستم های وارد کردن
از PIL وارد کردن تصویر
jpg_images = [تصویر برای تصویر در os.listdir () اگر image.endswith ( ‘.jpg “) ]
برای jpg_image در jpg_images: امتحان کنید : new_name = jpg_image.split ( ‘.’ ) [ 0 ] + ‘.png’ Image.open (jpg_image). ذخیره (نام_ جدید) به جز خطای IOError as : print ( ‘Couldn’ t read {} ‘ .format (jpg_image))

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

برش تصویر

بالش همچنین می تواند برای انجام برش تصویر استفاده شود که به موجب آن می توانید با تعیین مختصات مستطیل فرعی مستطیل فرعی از یک تصویر داده شده استخراج کنید.

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

>>> from PIL import تصویر
>>> تصویر = Image.open ( ‘sample.png’ )
>>> طناب = ( 50 ، 50 ، 300 ، 300 )
>>> تصویر جدید = picture.crop (طناب)
>>> new_picture.show ()

تولید

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

به موجب آن دو نقطه اول (x، y) <است / strong> از نقطه مورب بالا سمت چپ و دو نقطه بعدی (x2، y2) نیز نقطه مورب از پایین سمت راست هستند.

تحول هندسی

با <بالش می توانیم مقداری تغییر شکل هندسی بر روی تصویر خود انجام دهیم شامل تغییر اندازه اندازه تصویر و چرخش ها.

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

تغییر اندازه تصویر

>>> از PIL وارد کردن تصویر
>>> تصویر = Image.open ( ‘sample.png’ )
>>> resized_image = image.resize (( 200 ، 200 ))
>>> resized_image.save ( ‘resized.png’ )

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

چرخش تصویر

>>> از PIL وارد کردن تصویر
>>> تصویر = Image.open ( ‘sample.png’ )
>>> rotated_img = image.rotate ( 80 )
>>> rotated_img.save ( ‘rotated_img.png’ )

از ویژگی چرخش برای تولید تصاویر 360 درجه استفاده کنید < / strong> از یک تصویر در زوایای مختلف ، انجام این روش به ما کمک می کند تا به اندازه داده هایی تولید کنید که به طور بالقوه می توانید برای آموزش مدل یادگیری عمیق خود استفاده کنید.

Image generator.py

از PIL وارد کردن تصویر
images = [ ‘sample.jpg’ ]
برای img در تصاویر: امتحان کنید : org_img = Image.open (img) برای زاویه در محدوده ( 1 ، 361 ): image_name = str (angle) + ‘.jpg’ new_img = org_img.rotate (زاویه) new_img.save (نام تصویر) به جز IOError: print ( ‘Couldn’ t read {} ‘ .format (img))

پس از اجرای اسکریپت فوق ، باید 360 360 را ببینید / strong> تصاویر همان تصویر اصلی در زوایای مختلف همانطور که در زیر نشان داده شده است.

>h / h2>

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

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

فیلترهای زیادی در Pillow Library از جمله BLUR ، BoxBlur ، CONTOUR ، FIND_EDGES ، Filter ، GaussianBlur ، Kernel ، MaxFilter ، MedianFilter ، SHARPEN ، SMOOTH و غیره موجود است

مثال استفاده .

بیایید سعی کنیم با استفاده از فیلتر FIND_EDGES فیلتر

خروجی

می توانید با فیلترهای مختلف در پایتون بسته به آنچه می خواهید انجام دهید.

خواندن تصویر Fr om open file

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

>>> از PIL وارد کردن تصویر
>>> تصویر = Image.open (باز ( ‘brain.jpeg’ ، ‘rb’))

خواندن تصویر از URL

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

>>> import درخواست
>>> از PIL وارد کردن تصویر
>>> url = ‘https://i1.wp.com/kalebujordan.com/wp-content/uploads/2020/04/code-1084923.png’
>>> raw = daxwaz.get (آدرس اینترنتی ، جریان = درست). رسم
>>> Image.open (raw) .show ()

Output

ایجاد تصاویر جدید

با Pillow می توانید یک تصویر خالی جدید نیز ایجاد کنید ، ممکن است به آن نیاز داشته باشید برای اهداف مختلف ، از Image.new () برای ایجاد یک تصویر کاملاً جدید استفاده کنید.

  • مثال کاربرد: < div class = "code-container" readability = "10" >>>> from PIL import Image
    >>> new_img = Image.new ( ‘RGB’ ، ( 500 ، 500 ) ، “span>” آبی “ )
    >>> new_img.show ()

> رسم تصاویر در “R” / > Ples strong>

همچنین می توان از بالش برای رسم مستطیل روی تصاویر استفاده کرد ، این معمولاً در تشخیص شی applied اعمال می شود و به موجب آن می توانید یک جعبه مستطیل شکل روی یک شی detected شناسایی شده ترسیم کنید.

  • مثال استفاده

    بیایید سعی کنیم یک جعبه مستطیل شکل درون یک تصویر خالی ترسیم کنیم

    >>> از PIL وارد کردن تصویر ، ImageDraw
    >>> new_img = Image.new ( ‘RGB’ ، ( 400 ، 400 ) ، “سیاه” )
    >>> مداد = ImageDraw.Draw (new_img)
    >>> pencil.rectangle (( 200 ، 50 ، 300 ، 300 )) ، fill = “سبز” )
    >>> new_img.show ()

    خروجی

    ترسیم متن روی تصاویر

    همچنین می توانیم از Pillow Library برای ترسیم متن بر روی تصاویر استفاده کنیم

    >>> از PIL وارد کردن تصویر ، ImageDraw ، ImageFont
    >>> new_img = Image.new ( ‘RGB’ ، ( 200 ، 200 ) ، “سیاه” )
    >>> font = ImageFont.load_default ()
    >>> مداد = ImageDraw.Draw (new_img)
    >>> pencil.text (( 100 ، 100 ) ، “سلام به جهان” ، font = font ، fill = ‘blue’ )
    >>> new_img.show ()

    خروجی

    < IMG ALT SRC = "https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images٪2FMJpFVUEItkSdoh38rYo60VT7RfH3-hn1d283i.jpeg؟alt=media&token=5d88cfc1-764b-43c7-b4fc-d80fbe1d3709 ">

    خوب این همه چیز امروز است ، امیدوارم که برای شما مفید واقع شده باشد اکنون خجالتی نباشید ، آن را با توسعه دهنده دیگر خود به اشتراک بگذارید

    مقاله اصلی را می توان در kalebujordan.com یافت.

    در صورت هر گونه پیشنهاد ، اظهار نظر یا مشکل آن را در جامعه حذف کنید و من ASAP به شما پاسخ خواهم داد. < div class = "share"> این داستان را به اشتراک بگذارید

    عکس نمایه نویسنده

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

    من مهندس مکاترونیک هستم وهم آور | Pro Python Developer | علاقه مندان به هوش مصنوعی

    مرتبط

     تصویر آگهی

    1 واکنش

    داستان قبل از شکلک

    برچسب ها

    سئو PBN | خبر های جدید سئو و هک و سرور