Qualcuno può aiutarmi a capire cosa sta succedendo nello script di ritaglio automatico della mia immagine? Ho un'immagine png con una grande area/spazio trasparente. Mi piacerebbe essere in grado di ritagliare automaticamente quello spazio e lasciare l'essenziale. L'immagine originale ha una tela quadrata, in modo ottimale sarebbe rettangolare, incapsulando solo la molecola.Ritagliare automaticamente un'immagine con python/PIL
ecco l'immagine originale:
Facendo qualche googling mi sono imbattuto in codice PIL/python che è stato segnalato a lavorare, però nelle mie mani, in esecuzione il codice qui sotto over-colture l'immagine.
import Image
import sys
image=Image.open('L_2d.png')
image.load()
imageSize = image.size
imageBox = image.getbbox()
imageComponents = image.split()
rgbImage = Image.new("RGB", imageSize, (0,0,0))
rgbImage.paste(image, mask=imageComponents[3])
croppedBox = rgbImage.getbbox()
print imageBox
print croppedBox
if imageBox != croppedBox:
cropped=image.crop(croppedBox)
print 'L_2d.png:', "Size:", imageSize, "New Size:",croppedBox
cropped.save('L_2d_cropped.png')
l'output è questo:
Qualcuno può più familiarità con l'elaborazione delle immagini/PLI può aiutarmi a capire il problema?
'(...) CropBox [2]: CropBox [3] 1,:]' <- +1 per questo sorriso :) Sono nuovo di Python ...: P – cubuspl42
Questo il metodo funziona con Python3 se si importa 'Image' come' from PIL import Image' (avendo installato ['PILLOW'] (https://python-pillow.org/) per Python3). – ryanjdillon
Funziona come un fascino per le immagini RGB e RGBA ma non funziona con le immagini in modalità P .. puoi consigliarlo? – user12345