Verfasst am: 07.03.2009, 16:46
Titel: Probleme mit eps-Dateien
Hallo Leute!
Ich versuche zur Zeit ein Programm zu schreiben, dass Codemarken automatisch aus einer Datei erstellt. Das ist quasi ein Barcode-Band, das um einen schwarzen Punkt gewickelt wird (so, wie es im Bild untitledneu_Kopie.jpg dargestellt ist). Dazu muss ich Sektoren erstellen, und diese mit "fill" füllen. Da die Ränder störend sind, habe ich sie per "EdgeColor" in der jeweiligen Farbe definiert.
Nun kommen aber die Probleme: Die erzeugte Datei wird als Figure von Matlab korrekt angezeit. Das Speichern aus dem Figure-Fenster funktioniert auch ohne Probleme.
Will ich aber die selbe Datei aus dem Programm mit print('-depsc','Kreissektor6'); oder auch mit dem saveas(gcf, Kreissektor, eps) speichern, bekomme ich nur einen schwarzen Kreis (Markenprobe2_Fehler.jpg)...
Woran liegt das? Der Ablauf muss unbedingt automatisch erfolgen, weil niemand Lust hat bei 200 Marken immer im Figire-Fenster auf Speichern zu klicken und einen Namen einzutragen ....
Ich hoffe irgendjemand kann mir helfen
Viele Grüße
Anja
nein, das wird leider auch nur ein schwarzer Kreis
Das Phänomen tritt übrigens nur auf, wenn ich dem Rand die Farbe weiß oder schwarz zuweise. Wähle ich stattdessen rot, ist auch in der *.eps alles so wie es sein soll ...
und mit "none" funktioniert es auch nicht, falls das der nächste Vorschlag gewesen wäre...
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.03.2009, 08:42
Titel:
Kannst du mal einen kleinen Beispielcode erstellen bei dem das auftritt? Vielleicht hilft es, mal einen anderen Renderer zu versuchen.
function P=Kreisbogen(A,M,B,offset,varargin)
deg=pi/180;
[t1,r1]=cart2pol(A(1)-M(1),A(2)-M(2));
[t2,r2]=cart2pol(B(1)-M(1),B(2)-M(2));
ifabs(r1-r2)>sqrt(eps) error('Kreisbogen: A und B liegen nicht auf einem Kreis mit Mittelpunkt M') end
r=(r1+r2)/2;
t1=t1-offset;
t2=t2+offset;
if t2<t1
t2=t2+2*pi;
end
t=linspace(t1,t2,round((t2-t1)/deg));
P=repmat(M,size(t))+r*[cos(t);sin(t)];
drawPolygon(@plot,P,varargin{:});
if Code(i)==1
Farbe = 'w';
Inhalt = 1;
else
Farbe = 'k';
Inhalt = 0;
end
K=Kreisbogen(B,O,A,0, Farbe ,'linewidth',1);
%Zeichnen des Kreissektor
drawPolygon(@fill,[O K O], Inhalt*[111],'EdgeColor', Farbe);
end
t = 0:0.1:2*pi;
x = (2/3)*sin(t);
y = (2/3)*cos(t);
fill(x,y,'w', 'EdgeColor', 'w');
xx = (1/3)*sin(t);
yy = (1/3)*cos(t);
fill(xx,yy,'k', 'EdgeColor', 'k');
Das müsste dann schon ein bisschen schneller gehen.
Zum Plot-Problem kann ich im Moment auch nicht mehr sagen, als dass es wohl vom Typ (eps oder jpg) unabhängig ist. Ich bekomme mit beidem gefüllte Kreise.
Hat bestimmt einen lächerlich einfachen Grund, den wir gerade übersehen...
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.03.2009, 15:25
Titel:
Keine Ahnung, was da los ist, aber so müsste es erstmal für das eps klappen:
wenn es klappt wäre das echt super!
Kann es gerade leider nicht ausprobieren, da ich in den nächsten 2 Tagen nicht an das Programm komme.
Die Lösung für das *eps ist auch vollkommen ausreichend, da die skalierung noch irgendwie erfolgen muss, und dazu sind vektorgrafiken nun mal besser geeignet. oder kann man diese auch gleich in matlab auf eine definierte größe festlegen?
Die Schleife sieht natürlich so viel schöner aus. und die ausgabe als jpeg hatte ich nur probehalber mit drangehangen, um zu sehen, ob es ein typenproblem ist.
wie richtig vermutet handelt es sich um marken für die auswertung von bildern, also für photogrammetrische belange
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.03.2009, 23:09
Titel:
Womit machst du denn die Auswertung und was wird ausgewertet?
Was soll mit den eps-Files passieren, werden die ausgedruckt, aufgeklebt?
Hast du Inofs darüber, welche Toleranzen (Form, Größe, Lage) da erlaubt sind?
Wäre toll, wenn du dazu ein paar Sätze schreiben könntest...
Die Marken, die mit diesem Programm erzeugt werden, sind welche, die auf unserer Bildauswerteverfahren angepasst sind.
Diese Marken sind also eindeutige Codierungen, die auf einem Objekt aufgebracht werden, also ausgedruckt und aufgeklebt. Das Objekt wird durch eine Kamera aufgenommen und die Bilder in Matlab eingelesen. Durch ein Programm einer anderen Mitarbeiterin können die Marken mit Hilfe verschiedener Algorithmen im Bild gefunden werden und deren Zentrum, je nach Aufnahmequalität, mit ca. 1/50 Pixel Genauigkeit erfasst werden.
Je nach Objektgröße bzw. Aufnahmeentfernung variiert natürlich die Markengröße, daher auch die Definition als Vektorgrafik.
Über die gemessenen Bildkoordinaten sind dann weitere Auswertungen, bsp. über die Objektgeometrie, möglich...
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.