Ritaglia un'immagine JPGCercando di ritagliare il bordo grigio chiaro dall'esterno dell'immagine wafermap sottostante utilizzando il seguente script. Immagino di non capire come funziona il messaggio di ritaglio in quanto non c'è differenza tra le immagini prima e dopo.
Qualche idea di cosa sto sbagliando?
Saluti, Troy
img = open("D:\wafer.jpg", jpg);
win1 = newWindow("Original", img);
img << crop(left(5),right(5),top(5),bottom(5));
win2 = newWindow("Cropped", img);
img << savePicture("D:\waferCropped.jpg", jpg);

ScriptingRe: Ritagliare un'immagine JPGCiao,
Penso che tu abbia dimenticato di assegnare l'immagine ritagliata a una variabile:
img2 = img << crop(left(5),right(5),top(5),bottom(5));
win2 = newWindow("Cropped", img2);
Migliore,
TS
Re: Ritagliare un'immagine JPGGrazie per la risposta Thierry.
Avevo provato esattamente anche quello, ma senza fortuna.
Re: Ritagliare un'immagine JPGOK, quindi sembra che non abbia capito come funziona la funzione di ritaglio. Fondamentalmente è necessario conoscere l'altezza e la larghezza dell'immagine che si sta ritagliando e lavorare con quei valori quando si ritaglia, rispetto ai bordi LHS e TOP
Sinistra = Numero di pixel da rimuovere dal lato sinistro
Destra = 'Larghezza' (in pixel) dell'immagine rimanente da mantenere
In alto = Numero di pixel da rimuovere dalla parte superiore dell'immagine
In basso = 'Altezza' (in pixel) dell'immagine rimanente da mantenere
img = open("D:\WaferMaps\8PTPCVEB\wafer.jpg", jpg);
imgX = (img << GetSize)[1];
imgY = (img << GetSize)[2];
win1 = newWindow("Original", img);
myTrimBy = 5;
img << crop(left(myTrimBy),right(imgX - myTrimBy), top(myTrimBy), bottom(imgY - myTrimBy));
win2 = newWindow("Cropped", img);
img << savePicture("D:\WaferMaps\8PTPCVEB\waferCropped.jpg", jpg);
Re: Ritagliare un'immagine JPGBel lavoro. Le definizioni Right e Bottom che hai fornito non sono esattamente come hai specificato. La tua sceneggiatura è perfetta!
Vedi lo script qui sotto.
Names Default To Here( 1 );
img = Open( "$SAMPLE_IMAGES/tile.jpg", jpg );
s = {w,h} = img << get size();
show( s ); //{451, 451}
obj = New Window( "tile(40,40)", img );
Wait( 1 );
img << Crop( Left( 50 ), Right( 100 ), Top( 60 ), Bottom( 150 ) );
s = {w,h} = img << get size();
show( s ); //{50, 90}
//img is a matrix of pixels the initail size is 1 to 451 columns aka "w" width
//and "h" is height 1 to 451 rows
//Crop Left(x) is the starting column and Right(y) is the ending column
//Top() and Bottom() works the same, so after the crop the width is 100-50=50
//and the height is 150-60=90Re: Ritagliare un'immagine JPGcaro @Thierry_S ,
Avrei pensato allo stesso modo, questo comportamento è strano, come dice la documentazione: "crea nuova immagine ...".
Ma in effetti il ritaglio sta cambiando l'immagine corrente, quindi ai miei occhi la documentazione non è corretta, è fuorviante.
@tonya_mauldin , pensi che la documentazione debba essere modificata in base a questo?
Names Default To Here( 1 );
img = Open( "$SAMPLE_IMAGES/tile.jpg", jpg );
Print( "Size before crop:", img << get size );
img << Crop(
Left( 50 ),
Right( 400 ),
Top( 50 ),
Bottom( 400 )
);
Print( "Size before crop:", img << get size );
print("So crop changes the image and does not create a new one as written in the documentation");Immagini (jmp.com)
Re: Ritaglia un'immagine JPGSì, è un'interfaccia non ovvia e vuole un documento migliore. @QianaEaglin
pixels = [
-11 -11 -11 -11 -11 -11 -11 -11 -11,
-11 -11 -91 -99 -99 -99 -99 -92 -11,
-11 -11 -99 -99 -99 -99 -99 -99 -11,
-11 -11 -99 -99 -99 -99 -99 -99 -11,
-11 -11 -99 -99 -99 -99 -99 -99 -11,
-11 -11 -93 -99 -99 -99 -99 -94 -11];
img = New Image( pixels );
{hSize, ySize} = img << size;
Show( img << getsize, img << getpixels );
// crop the -11 out of the image
img << crop( Left( 2 ), Right( 8 ), top( 1 ), bottom( 6 ) );
Show( img << getsize, img << getpixels );
//// img << getsize = {6, 5};
//// img << getpixels =
//// [ -91 -99 -99 -99 -99 -92,
//// -99 -99 -99 -99 -99 -99,
//// -99 -99 -99 -99 -99 -99,
//// -99 -99 -99 -99 -99 -99,
//// -93 -99 -99 -99 -99 -94];
Gli indici di pixel in base zero si trovano sulle linee sottili tra i pixel.