Wie zeichne ich in MATLAB ein Bild und speichere das Ergebnis, ohne es anzuzeigen?
Diese Frage irgendwie fängt da an, wo diese Frage endet. MATLAB ist eine leistungsfähige und flexible Bild-display-system, das Ihnen erlaubt, verwenden Sie die imshow-und plot-Befehle zur Darstellung komplexer Bilder und speichern Sie dann das Ergebnis. Zum Beispiel:
im = imread('image.tif');
f = figure, imshow(im, 'Border', 'tight');
rectangle('Position', [100, 100, 10, 10]);
print(f, '-r80', '-dtiff', 'image2.tif');
Diese funktioniert Super.
Das problem ist, dass, wenn Sie tun eine Menge von Bild-Verarbeitung, beginnt es zu real ziehen, um zu zeigen, jedes Bild, das Sie erstellen - Sie-meist wollen Sie einfach speichern Sie Sie. Ich weiß, ich könnte direkt Los schreiben zu einem Bild, und speichern Sie anschließend das Ergebnis. Aber mit plot/Rechteck/imshow ist so einfach, so hoffe ich, gibt es einen Befehl, lassen Sie mich rufen Sie plot, imshow etc, nicht die Ergebnisse anzeigen und dann speichern, was gewesen wäre, angezeigt. Wer weiß, irgendwelche schnellen Lösungen für dieses?
Alternativ einen schnellen Weg, um ein spline auf einem bitmap könnte funktionieren...
InformationsquelleAutor der Frage Joe Soul-bringer | 2009-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim erstellen der Abbildung setzen Sie die Sichtbar Eigenschaft Aus.
Die in Ihrem Fall wäre
Und wenn Sie wollen, um es wieder, Sie tun können,
InformationsquelleAutor der Antwort Bessi
Die einfache Antwort auf Ihre Frage gegeben ist durch Bessi und Herrn Fooz: legen Sie die "Sichtbar" - Einstellung, die für die Abbildung auf 'off'. Obwohl es sehr einfach zu bedienen-Befehle wie IMSHOW und DRUCKEN zu generieren, die zahlen, werde ich zusammenfassen, warum ich glaube, es ist nicht unbedingt die beste option:
Wie dargestellt von Herrn Fooz Antwort, es gibt viele andere Faktoren, die ins Spiel kommen, wenn Sie versuchen zu speichern zahlen als Bilder. Die Art der Ausgabe, die Sie bekommen, ist abhängig zu sein, auf der viele Bild-und Achsen-Einstellungen und erhöht so die Wahrscheinlichkeit, dass Sie nicht die Ausgabe, die Sie wollen. Dies könnte besonders problematisch sein, wenn Sie Ihre Figuren gesetzt, werden unsichtbar, da Sie nicht bemerken, eine Diskrepanz, die verursacht werden kann durch eine änderung in einer default-Einstellung für die Abbildung oder Achsen. Kurzum, der Ausgang wird sehr empfindlich auf eine Reihe von Einstellungen, die Sie möchten, müssen Sie dem code hinzufügen, um die Kontrolle Ihren Ausgang, wie von Herrn Fooz Beispiel zeigt.
Selbst wenn Sie nicht die Anzeige der zahlen, wie Sie gemacht sind, Sie sind immer noch wahrscheinlich machen MATLAB machen mehr Arbeit, als wirklich notwendig ist. Grafik-Objekte werden noch erstellt, auch wenn Sie nicht wiedergegeben werden. Wenn die Geschwindigkeit ist ein Anliegen, das die Erzeugung von Bildern anhand der zahlen scheint nicht so die ideale Lösung.
Mein Vorschlag ist, tatsächlich ändern Sie die Bild-Daten direkt und speichern Sie es mit IMWRITE. Kann es nicht so einfach ist wie mit IMSHOW und andere Lösungen zeichnen, aber ich denke, es ist effizienter und bietet mehr robuste und konsistente Ergebnisse, die sind nicht so empfindlich auf verschiedene plot-Einstellungen. Für das Beispiel, das Sie geben, glaube ich, dass die alternativen code für ein Schwarzes Rechteck würde wie folgt Aussehen:
InformationsquelleAutor der Antwort gnovice
Ich bin die Erweiterung auf Bessi Lösung hier ein bisschen. Ich habe festgestellt, dass es sehr hilfreich zu wissen, wie das Bild, bis die ganze Figur und in der Lage sein, eine starke Kontrolle über die Ausgabegröße des Bildes.
Wenn Sie möchten, um zu machen die Zahl zu einer matrix, geben Sie "help @avifile/addframe", extrahieren Sie dann die Unterfunktion namens "getFrameForFigure". Es ist ein Mathworks-geliefert-Funktion verwendet (derzeit) nicht dokumentierte Möglichkeiten der Extraktion von Daten aus Abbildung.
InformationsquelleAutor der Antwort Mr Fooz
Hier ist eine komplett andere Antwort:
Wenn Sie möchten, eine Bild-Datei aus, warum nicht einfach das Bild speichern, anstatt die gesamte Figur?
Dann beweisen, dass es funktionierte.
Kann dies für indiziert und RGB auch für verschiedene Ausgabe-Formate.
InformationsquelleAutor der Antwort MatlabDoug
Könnten Sie -noFigureWindows zu deaktivieren alle zahlen.
InformationsquelleAutor der Antwort Daniel