image processing, python, پایتون, پردازش تصویر, پردازش تصویر در پایتون

ساخت تصویر معکوس در پایتون (Mirror Image)

ساخت تصویر معکوس در پایتون

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

  1.  خواندن تصاویر در پایتون
  2. حلقه for در پایتون
  3. لیست در پایتون
  4. توابع در پایتون

ساخت تصویر معکوس

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

  1. ابعاد تصویر ورودی را بدست آوریم.
  2. یک تصویر به اندازه تصویر ورودی ایجاد کنیم. این تصویر را تصویر معکوس یا ثانویه نامگذاری می‌کنیم.
  3. مقادیر  ARGB (Alpha, Red, Green and Blue)، را از تصویر اولیه (به ترتیب چپ به راست) بدست اورید.
  4. در تصویر معکوس یا ثانویه (به ترتیب راست به چپ) ،  ARGB (Alpha, Red, Green and Blue)آنها را قرار دهید.
  5. مراحل 4 و5 را برای هریک از پیکسل های تصویر تکرار کنید.

پیاده‌سازی ساخت تصویر معکوس در پایتون

همانطور که در قسمت قبل گفته شد برای پیاده سازی تصویر معکوس، پیکسل‌های تصویری را از چپ به راست خوانده و در تصویر جدیدی از راست به چپ می‌ریزیم. برای پیاده سازی دو متغیر lx و rx را در نظر می‌گیریم. Lx اشاره‌گر به پیکسل‌های تصویر اصلی است و rx اشاره‌گر به تصویر معکوس ما.

ابتدا lx عدد صفر و rx به اندازه عرض تصویر ما است. با حرکت lx به سمت راست (خواندن تصویر اصلی) یکی از rx کم می‌شود. دقت کنید به ازای حرکت یک پیکسل به lx یکی اضافه می‌شود و از rx کم می‌شود. کد پیاده‌سازی این الگوریتم به صورت زیر است:

from PIL import Image
def mirrorImage (sourceAddress,destAddress):
    source = Image.open(sourceAddress)
    result = Image.new('RGB', source.size)
    
    width, height = source.size
    pixels = result.load()
    
    
    for i in range(00, height, 1):
        rx = width - 1
        for lx in range(00, width, 1):
            red = source.getpixel(( lx, i))[00]
            green = source.getpixel((lx, i))[1]
            blue = source.getpixel((lx, i))[2]
            pixels[rx, i] = (red, green, blue,255)
            rx-=1
    
    
    result.save(destAddress, "JPEG")
if __name__ == '__main__':
    mirrorImage('mirror Input.jpg','mirror Output.jpg')
    print("finish Convert Image...")

ورودی کد بالا به صورت زیر است:

خروجی برنامه به صورت زیر است:

اگر سوالی در خصوص این آموزش دارید در قسمت کامنت قرار دهید تا ما شما را راهنمایی کنیم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *