چگونه از Pillow برای انجام نقاشی روی یک تصویر استفاده کنیم؟

Nov 10, 2025

پیام بگذارید

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

درک تصویر درون نقاشی

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

پیش نیازها

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

بالش نصب پیپ

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

اولین مرحله در هر کار پردازش تصویر، بارگذاری تصویر است. Pillow یک راه ساده برای انجام این کار ارائه می دهد. در اینجا نمونه ای از بارگذاری یک تصویر آورده شده است:

از PIL import Image # بارگذاری تصویر image_path = 'your_image.jpg' image = Image.open(image_path) # اگر قبلاً نبوده است تصویر را به حالت RGB تبدیل کنید اگر image.mode != 'RGB': image = image.convert('RGB')

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

تعریف منطقه Inpainting

برای انجام inpainting باید ناحیه ای را در تصویری که می خواهیم پر کنیم مشخص کنیم. این را می توان با ایجاد یک ماسک باینری انجام داد که در آن پیکسل های ناحیه ای که قرار است رنگ آمیزی شود روی 255 (سفید) و بقیه روی 0 (سیاه) تنظیم می شوند.

import numpy به عنوان np # ایجاد یک ماسک خالی به همان اندازه ماسک تصویر = Image.new('L', image.size, 0) # ناحیه ای را که قرار است نقاشی شود (مثلاً مستطیل) تعریف کنید x1, y1, x2, y2 = 100, 100, 200, 200, Image Draw =Draw 200. draw.rectangle((x1, y1, x2, y2), fill = 255)

در این کد ابتدا یک تصویر جدید در مقیاس خاکستری ایجاد می کنیم (حالت='L') به اندازه تصویر اصلی است و آن را با 0 پر می کنیم. سپس از آن استفاده می کنیمImageDrawماژول برای کشیدن یک مستطیل روی ماسک، که نمایانگر ناحیه ای است که باید رنگ آمیزی شود.

تکنیک رنگ آمیزی ساده: میانگین پیکسل های همسایه

یکی از ساده‌ترین تکنیک‌های رنگ‌آمیزی، پر کردن ناحیه رنگ‌شده با رنگ متوسط ​​پیکسل‌های همسایه است. در اینجا نحوه اجرای آن با استفاده از Pillow آورده شده است:

from PIL import ImageDraw # تبدیل تصویر و ماسک به آرایه‌های numpy image_array = np.array(image) mask_array = np.array(mask) # مختصات ناحیه رنگ‌شده را دریافت کنید inpaint_coords = np.where(mask_array == 255) # inpainty inpainted over the x zip(*inpaint_coords): # پیکسل‌های همسایه را دریافت کنید همسایگان = [] برای dx در [-1, 0, 1]: برای dy در [-1, 0, 1]: اگر dx == 0 و dy == 0: ادامه nx, ny = x + dx, y + dy if 0 <= nxsha < image_ray image_array.shape[1] و mask_array[nx, ny] == 0: nears.append(image_array[nx, ny]) # محاسبه میانگین رنگ همسایگان اگر همسایگان: average_color = np.mean (همسایه ها، محور = 0).astype(int) آرایه آرایه پشتی (int) یک تصویر inpainted_image = Image.fromarray(image_array)

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

نقاشی پیشرفته با بالش و کتابخانه های دیگر

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

Memory Foam PillowHousehold Pillow

from skimage.restoration import inpaint import numpy as np # تبدیل تصویر و ماسک به آرایه numpy image_array = np.array(image) mask_array = np.array(mask) # انجام inpainting با استفاده از روش سریع مارش inpainted_array = inpaint.inpaint. بازگشت آرایه numpy به یک تصویر inpainted_image = Image.fromarray((inpainted_array * 255).astype(np.uint8))

در این کد از کد استفاده می کنیمinpaint_fmmتابع ازscikit - تصویربرای انجام نقاشی داخلی این تابع از روش راهپیمایی سریع برای پر کردن ناحیه نقاشی شده استفاده می کند. پس از inpainting، آرایه numpy را دوباره به تصویر تبدیل می کنیم.

ذخیره تصویر Inpainted

هنگامی که تصویر نقاشی شده را دارید، می توانید آن را در یک فایل ذخیره کنید.

# ذخیره تصویر inpainted output_path = 'inpainted_image.jpg' inpainted_image.save(output_path)

این کد تصویر نقاشی شده را در مسیر فایل مشخص شده ذخیره می کند.

کاربردهای نقاشی تصویر با بالش

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

محصولات بالش ما

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

برای خرید و همکاری با ما تماس بگیرید

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

مراجع

  • اسناد رسمی بالش
  • Scikit - مستندات تصویری
  • کتاب های درسی پردازش تصویر در الگوریتم های نقاشی درون تصویر

ارسال درخواست