centroid
ist eine Funktion in meiner library zur Bestimmung eines Flächenschwerpunktes. Du musst sie mit
exec centroid.sci
laden.
Hallo Stochri,
hab das gerade ausprobiert aber es geht mal wieder nicht. Bei Scilab kommt die Meldung :"undefined variable : centroid"
Das verstehe ich aber nicht. Bei dir gehts doch auch. Hast du vielleicht eine andere Sipversion?
MfG Mike
P.S.: Nein ich kann leider nicht mit Vektoren rechnen![]()
centroid
ist eine Funktion in meiner library zur Bestimmung eines Flächenschwerpunktes. Du musst sie mit
exec centroid.sci
laden.
Achso,
ich habe jetzt exec centroid.sci gleich in mein Startfile intigriert. Beim erneuten Versuch kam dann die Meldung das drawcross nicht bekannt ist. Das ist ja auch in deiner Lib. Also hab ich es auch in mein Startfile rein getan. Nun kommt die Meldung:
undefined variable : mogrify
Also ich hab dann mal nachgesehen und das Wort kommt im dem drawcross file vor. Was nun???
MfG Mike
Ok, in Deiner Version von SIP gibt es kein mogrify.
Deshalb habe ich Dir eine neue Version von drwacross ohne mogrify gemacht:
Code:function pic_out=drawcross(pic,x,y) // // draw a cross in a picture // // // v1.1 21.2.2006 stochri // // // Verion History // // v1.0 using mogrify // v1.1 without using mogrify a=4; b=30; rectangle=ones(b,a); y1=y-b/2; x1=x-a/2; //pic_out=pic; pic(y1:y1+b-1,x1:x1+a-1,1)=rectangle-1; pic(y1:y1+b-1,x1:x1+a-1,2)=rectangle-1; pic(y1:y1+b-1,x1:x1+a-1,3)=rectangle; a=30; b=4; rectangle=ones(b,a); y1=y-b/2; x1=x-a/2; pic(y1:y1+b-1,x1:x1+a-1,1)=rectangle-1; pic(y1:y1+b-1,x1:x1+a-1,2)=rectangle-1; pic(y1:y1+b-1,x1:x1+a-1,3)=rectangle; pic_out=pic; endfunction // // ------------------------------------------------------------------------- // This file ist made for scilab the free mathematical toolbox // // Copyright (C) 2005 stochri // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // ------------------------------------------------------------------------- //
Hi,
ich habe jetzt das alte drawcrossfile mit dem neuen Inhalt ersetzt. Dann habe ich das wieder ausprobiert und es kommt wieder eine Fehlermeldung;
Size: 240 rows X 320 columns
Truecolor Image
xbasc =
[]=xbasc(win_num)
xcp =
0.
ycp =
0.
!--error 21
invalid index
at line 80 of function %s_i_hm called by :
line 23 of function drawcross called by :
x=drawcross(x,xcp,ycp);
line 14 of exec file called by :
suro Programme\scifiles\Testfile');disp('exec done')
Also bis draw.. geht alles super. Aber das Bild was geladen wird ist immer noch schwarz.
Ist mir richtig peinlich das ich dir so viel Arbeit mache.
MfG Mike
Ok,
Du kannst folgende probieren:
x=imread('test.jpeg');
y=drawcross(x,100,100);
imshow(y);
Die Funktion drawcross zeichnet eigentlich nur ein blaues Kreuz, im obigen Beispiel an die Stelle 100,100.
xbasc ist eigentlich nur zum Bildschrimlöschen gedacht. Also wen xbasc nicht geht, einfach weglassen.
Überprüfe mal die Koordinaten, welche die Flächenberechnungsfunktion ausgibt. Ich vremute, dass bei dem Bild was Du verwendet hast, irgendwie falsche Koordinaten rauskommen.
Hast Du die Funktion von centroid verstanden ?
Gruss,
stochri
Hi,
nein die Funktion habe ich nicht verstanden. Aber wenn ich bei drawcross anstatt (x,ycp,xcp) (x,100,100) oder halt andere Koordinaten, eingebe geht das file. Also dann wird das Kreuz gezeichnet. Also denke ich der Fehler liegt bei der centroid Funktion. Denn Koordinaten gibt die Flächenberechnungsfunktion auch nicht aus. Oder ich weiß nicht wo die ausgegeben werden. Bei scilab steht immer nur:
xcp =
0.
ycp =
0.
MfG Mike
Die centroid-Funktion berechnet, wie oben schon erwähnt, den Schwerpunkt der weisen Pixel in einem Schwarzweisbild.
Wenn die Fuktion x und y =0 zurückliefert, sind vermutlich keine weisen Pixel in Deinem Schwarz-Weisbild.
Das Schwarz-Weisbild des Monitorphotos, welches Du geposted hast, müsste eigentlich gut mit der centroid Funktion funktionieren.
Du kannst die centroid Funktion mit dem Bild ausprobieren:
[x y]=centroid(deinschwarzweisbild);
Hallo Stochri,
Ich habe es jetzt hingekriegt. Es lag an der Helligkeitsanpassung die ging nähmlich nicht.(hab sie einfach weggelassen)Mein file sieht jetzt so aus:
x=imread('Bild');
red=x(:,:,1);
bw=im2bw(red,0.79);
xset('window',2);
xbasc
imshow(bw*240);
[ycp xcp]=centroid(bw)
x=drawcross(x,ycp,xcp);
xset('window',3);
imshow(x*230);
und so sieht es dann aus wenn der Stift gefunden ist:
MfG Mike![]()
Super ! Ich bin begeistert !
Vielleicht kannst Du mal eine rote Fläche auf den ASURO kleben und ausprobieren, ob er an verschiedenen Positionen und unter verschiedenen Beleuchtungsbedingungen korrekt erkannt wird.
--------------------------------------------------------------------------------------------------------------------------------------------------
( warum geht bei mir im post das Smili mit dem Klatschen =D> nicht? weiss das jemand ? )
Lesezeichen