Hur använder man Pillow för att utföra bildmålning på en bild?

Nov 10, 2025

Lämna ett meddelande

Image inpainting är en kraftfull teknik inom bildbehandlingsområdet, som syftar till att fylla i saknade eller skadade delar av en bild sömlöst. Pillow, ett välkänt Python-bibliotek för bildmanipulering, kan effektivt användas för att utföra bildmålning. Som leverantör av kuddar är jag glad att få dela med mig av hur du använder Pillow för detta ändamål.

Förstå bildmålning

Innan du går in i implementeringen är det viktigt att förstå vad bildmålning är. Bildmålning används i olika scenarier, som att ta bort oönskade föremål från en bild, återställa gamla och skadade foton eller fylla i områden som skyms av text eller andra element. Målet är att få det målade området att smälta in med de omgivande pixlarna så att den slutliga bilden ser naturlig ut.

Förutsättningar

För att börja använda Pillow för bildmålning måste du ha Python installerat på ditt system. Du kan sedan installera Pillow medpip:

pip installera kudde

Laddar och förbearbetar bilden

Det första steget i en bildbehandlingsuppgift är att ladda bilden. Kudde ger ett enkelt sätt att göra detta. Här är ett exempel på hur du laddar en bild:

från PIL import bild # Ladda bilden image_path = 'din_bild.jpg' image = Image.open(image_path) # Konvertera bilden till RGB-läge om den inte redan är if image.mode != 'RGB': image = image.convert('RGB')

I den här koden importerar vi förstBildmodul från Pillow. Sedan öppnar vi bilden med hjälp avöppnametod. Det är bra att konvertera bilden till RGB-läge, eftersom vissa operationer kan kräva det.

Definiera målningsområdet

För att utföra målning måste vi definiera området i bilden som vi vill fylla. Detta kan göras genom att skapa en binär mask där pixlarna i området som ska målas är inställda på 255 (vit), och resten är satt till 0 (svart).

importera numpy som np # Skapa en tom mask av samma storlek som bildmasken = Image.new('L', image.size, 0) # Definiera området som ska målas in (t.ex. en rektangel) x1, y1, x2, y2 = 100, 100, 200, 200 draw =Image,Drect.(Draw, mask. y1, x2, y2), fyll = 255)

I den här koden skapar vi först en ny gråskalebild (mode='L') av samma storlek som originalbilden och fyll den med 0. Sedan använder viImageDrawmodul för att rita en rektangel på masken, som representerar området som ska målas.

Enkel målningsteknik: genomsnittliga grannpixlar

En av de enklaste målningsteknikerna är att fylla det målade området med medelfärgen på närliggande pixlar. Så här kan du implementera det med Pillow:

från PIL import ImageDraw # Konvertera bilden och masken till numpy arrays image_array = np.array(image) mask_array = np.array(mask) # Hämta koordinaterna för det inpainted området inpaint_coords = np.where(mask_array == 255) # Itererat i x,pa masken zip(*inpaint_coords): # Få angränsande pixlar grannar = [] för dx i [-1, 0, 1]: för dy i [-1, 0, 1]: om dx == 0 och dy == 0: fortsätt nx, ny = x + dx, y + dy om 0 <= nx <[bild_0] och .sha <[bild_0] image_array.shape[1] och mask_array[nx, ny] == 0: neighbors.append(image_array[nx, ny]) # Beräkna medelfärgen på grannarna om grannar: average_color = np.mean(grannar, axel = 0).astype(int) color _array konvertera =[x_ _array] backa till en bild inpainted_image = Image.fromarray(image_array)

I den här koden konverterar vi först bilden och masken till numpy arrays. Sedan hittar vi koordinaterna för det målade området med hjälp avnp.var. För varje pixel i det målade området hittar vi dess närliggande pixlar som inte finns i det målade området. Vi beräknar medelfärgen för dessa grannar och ställer in färgen på den målade pixeln till denna medelfärg. Slutligen konverterar vi numpy-arrayen tillbaka till en bild.

Avancerad målning med kudde och andra bibliotek

Även om den enkla inmålningstekniken kan fungera i vissa fall, för mer komplexa scenarier kanske du vill använda mer avancerade algoritmer. En sådan algoritm är den snabba marschmetoden, som kan implementeras med hjälp avscikit - bildbibliotek i kombination med Pillow.

Memory Foam PillowHousehold Pillow

från skimage.restoration importera inpaint importera numpy som np # Konvertera bilden och masken till numpy arrays image_array = np.array(image) mask_array = np.array(mask) # Utför inpainting med hjälp av snabbmarschmetoden inpainted_array = inpaint.inpaintarray_fmm,(image_num mask) till en bild inpainted_image = Image.fromarray((inpainted_array * 255).astype(np.uint8))

I den här koden använder viinpaint_fmmfunktion frånscikit - bildatt utföra målning. Denna funktion använder den snabba marschmetoden för att fylla det målade området. Efter målning konverterar vi numpy arrayen tillbaka till en bild.

Sparar den målade bilden

När du har den målade bilden kan du spara den i en fil.

# Spara den inpainted bilden output_path = 'inpainted_image.jpg' inpainted_image.save(output_path)

Denna kod sparar den målade bilden till den angivna sökvägen.

Tillämpningar av bildmålning med kudde

Bildmålning med Pillow har ett brett användningsområde. Inom fotografering kan den användas för att ta bort oönskade föremål som människor, skyltar eller dammfläckar från en bild. Vid restaurering av historiska bilder kan det hjälpa till att reparera skadade områden och återställa bildens ursprungliga skönhet. Inom området datorgrafik kan den användas för att skapa sömlösa texturer eller fylla i saknade delar av 3D-modeller.

Våra kuddprodukter

Som en kuddleverantör ger vi inte bara kunskapen om att använda kuddar för bildmålning utan erbjuder också en mängd olika högkvalitativaHushållskuddeochMemory Foam Kudde. Våra hushållskuddar är designade för att ge maximal komfort under sömnen, medan våra kuddar med memory foam anpassar sig till formen på ditt huvud och nacke, vilket minskar tryckpunkter och främjar bättre sömn.

Kontakta oss för köp och samarbete

Om du är intresserad av våra Kuddprodukter eller har några frågor om att använda Kudde för bildmålning, välkomnar vi dig att kontakta oss för köp och samarbete. Vi är fast beslutna att ge dig de bästa produkterna och tjänsterna.

Referenser

  • Kudde officiell dokumentation
  • Scikit - bilddokumentation
  • Bildbehandlingsböcker om bildinmålningsalgoritmer

Skicka förfrågan