Ein JPG-Bild zuschneidenVersuchen Sie, den hellgrauen Rand von der Außenseite des unteren Wafermap-Bildes mit dem folgenden Skript zu beschneiden. Ich glaube, ich verstehe nicht, wie die Zuschneidenachricht funktioniert, da es keinen Unterschied zwischen den Vorher- und Nachher-Bildern gibt.
Irgendeine Idee, was ich falsch mache?
Prost, Troja
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);

SkriptingRe: Ein JPG-Bild zuschneidenHi,
Ich glaube, Sie haben vergessen, das zugeschnittene Bild einer Variablen zuzuweisen:
img2 = img << crop(left(5),right(5),top(5),bottom(5));
win2 = newWindow("Cropped", img2);
Am besten,
TS
Re: Ein JPG-Bild zuschneidenDanke für die Antwort Thierry.
Genau das hatte ich auch schon probiert, aber ohne Erfolg.
Re: Ein JPG-Bild zuschneidenOK, es sieht so aus, als hätte ich einfach nicht verstanden, wie die Zuschneidefunktion funktioniert. Grundsätzlich müssen Sie die Höhe und Breite des zuzuschneidenden Bildes kennen und beim Zuschneiden mit diesen Werten arbeiten, relativ zu den LHS- und OBEREN-Kanten
Links = Anzahl der Pixel, die von der linken Seite entfernt werden sollen
Rechts = 'Breite' (in Pixel) des verbleibenden Bildes, das beibehalten werden soll
Oben = Anzahl der Pixel, die vom oberen Rand des Bildes entfernt werden sollen
Unten = 'Höhe' (in Pixel) des verbleibenden Bildes, das beibehalten werden soll
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: Ein JPG-Bild zuschneidenGut gemacht. Die von Ihnen angegebenen Definitionen von Right und Bottom entsprechen nicht genau Ihren Angaben. Ihr Skript ist genau richtig!
Siehe das Skript unten.
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: Ein JPG-Bild zuschneidenLiebling @Thierry_S ,
Ich hätte genauso gedacht, dieses Verhalten ist seltsam, da die Dokumentation sagt: "Erzeugt neues Image ...".
Aber in der Tat ändert Crop das aktuelle Bild, daher ist die Dokumentation in meinen Augen nicht korrekt, sie ist irreführend.
@tonya_mauldin , meinst du, dass die Dokumentation entsprechend geändert werden muss?
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");Bilder (jmp.com)
Betreff: JPG-Bild zuschneidenJa, es ist eine nicht offensichtliche Schnittstelle und will eine bessere Dokumentation. @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];
Die nullbasierten Pixelindizes befinden sich auf den Haarlinien zwischen den Pixeln.