Ritaglia un'immagine JPGTentativo 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 poiché non vi è alcuna differenza tra le immagini prima e dopo.
Qualche idea di cosa sto sbagliando?
Ciao, Troia
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);

SceneggiaturaRe: Ritaglia un'immagine JPG@Giorgio indicato https://www.jmp.com/support/help/en/16.1/?os=win&source=application&utm_source=helpmenu&utm_medium=application#page/jmp/images.shtml
Che sembra identico al guida allo scripting . riferimento alla sintassi.

Vorrei indicare l'indice di script:

Entrambi dicono "crea una nuova immagine" ma solo l'immagine esistente viene modificata, il che faceva parte della confusione, e nemmeno la spiegazione dei parametri funziona bene. C'è un altro ritaglio, per un segmento, che è distinto da questo.
Grazie per averlo guardato!
Re: Ritaglia un'immagine JPGGrazie per averlo portato alla mia attenzione. A quale documento si fa riferimento nei commenti precedenti?
Grazie,
Qiana
Re: Ritaglia un'immagine JPGSì, è un'interfaccia non ovvia e vuole un documento migliore. @Anonimo
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];
The zero-based pixel indexes are on the hairlines between the pixels.The zero-based pixel indexes are on the hairlines between the pixels.The zero-based pixel indexes are on the hairlines between the pixels.The zero-based pixel indexes are on the hairlines between the pixels.The zero-based pixel indexes are on the hairlines between the pixels.Gli indici di pixel in base zero si trovano sulle linee sottili tra i pixel.
Re: Ritaglia un'immagine JPGCara @Thierry_S ,
Avrei pensato allo stesso modo, questo comportamento è strano, come dice la documentazione: "crea una nuova immagine...".
Ma in effetti il crop 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 JPGBel lavoro. Le definizioni Right e Bottom che hai fornito non sono esattamente come hai specificato. Il tuo copione è perfetto!
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: Ritaglia un'immagine JPGOK, quindi sembra che non abbia capito come funziona la funzione di ritaglio. Fondamentalmente devi conoscere l'altezza e la larghezza dell'immagine che stai ritagliando e lavorare con quei valori quando ritagli, rispetto a LHS e TOP Edges
Sinistra = Numero di pixel da rimuovere dal lato sinistro
Destra = 'Larghezza' (in pixel) dell'immagine rimanente da mantenere
Superiore = Numero di pixel da rimuovere dalla parte superiore dell'immagine
Bottom = 'Altezza' (in pixel) dell'immagine rimanente da conservare
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: Ritaglia un'immagine JPGGrazie per la risposta Thierry.
Anche io avevo provato esattamente quello, ma senza fortuna.
Re: Ritaglia 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
Ri: Ritagliare un'immagine JPGGrazie @Craige_Hales
molto (!) utile