Hallo zusammen,
ich steh mächtig auf dem Schlauch!!
Ich hab eine Videokamera, lese die Grauwerte der Pixel aus und schreibe die Werte in ein Array. Die Werte werden mit einem Vergleichswert verglichen und dann in 0 oder 1 unterteilt. Also:
Pixelwert > 100 dann = 1
Pixelwert < 100 dann = 0
Soweit funktioniert alles.
Jetzt will ich einfach nur das 0,1-Array summieren, sodass ich nachher einen skalaren Wert (Referenzwert) bekomme.
Das Array besteht nur aus 0 und 1!!! Mein skalarer Wert ist aber negativ... WARUM?
Gruß Itaurus
Kleiner Tipp:
Schau mal auf die Datentypen, die du da so verwendest - und was diese eigentlich so erlauben.
Rote Punkte im BD haben auch eine Bedeutung und einen Namen (CoercionDot)!
Fragen:
- Hast du schon mal das AutoCleanup-Tool bemerkt?
- Warum erstellst du erst ein 2D-Array mit 2M Elementen, wenn du es dann in ein 1D-Array mit 2M Elementen umformst?
- Warum nimmst du die ersten 2M Elemente eines Arrays mit genau 2M Elementen? (Wieso das SplitArray?)
- Warum der ganze Aufwand, wenn du deine Bilddaten auch mit einem skalaren Wert vergleichen könntest?
-Hast du schon mal das AutoCleanup-Tool bemerkt?
Nein! Kenn ich nicht... Ich bin leider blutiger Anfänger
-Warum erstellst du erst ein 2D-Array mit 2M Elementen, wenn du es dann in ein 1D-Array mit 2M Elementen umformst?
- Warum nimmst du die ersten 2M Elemente eines Arrays mit genau 2M Elementen? (Wieso das SplitArray?)
- Warum der ganze Aufwand, wenn du deine Bilddaten auch mit einem skalaren Wert vergleichen könntest?
Den ganzen Aufwand betreibe ich nur, weil ich nur zwei Arrays miteinander verglichen bekomme. Wenn ich Array und einen skalaren Wert vergleichen will meckert der rum.
Ein 1dimensionales Array mit 200000mal dem gleichen Wert zu erstellen hab ich leider auch nur so auf diese sehr dämliche Weise hinbekommen.
Wenn ihr Verbesserungsvorschläge habt, immer her damit
Ich bin leider erst in ein paar Tagen wieder im Büro und kann mich dem AutoCleanup Tool annehmen...
Hat jemand vielleicht eine Vermutung, was das Problem sein könnte? Das mit dem falschen Datentyp hab ich geändert, war aber natürlich nicht die Ursache des Problems.
Hallo Itaurus,
Zitat:Ich bin leider blutiger Anfänger
Dann empfehle ich die Links in meiner Signatur!
Zitat:Wenn ich Array und einen skalaren Wert vergleichen will meckert der rum.
Bei mir funktioniert das. Inwiefern "meckert" bei dir da etwas?
(LabVIEW hat bei mir noch nie "gemeckert". Ich bekomme immer ordentliche
Fehlermeldungen…)
Zitat:Ein 1dimensionales Array mit 200000mal dem gleichen Wert zu erstellen hab ich leider auch nur so auf diese sehr dämliche Weise hinbekommen. Wenn ihr Verbesserungsvorschläge habt, immer her damit
InitArray mit 2M als Anzahl und dem gewünschten Wert…
Zitat:Das mit dem falschen Datentyp hab ich geändert, war aber natürlich nicht die Ursache des Problems.
Der falsche Datentyp ist genau der Kern deines Problems!
So ich hab mal neue Screenshots gemacht.
Das erstellte Array sieht jetzt schon viel schöner aus und der rote Punkt ist auch weg.
Ich hab mir mal die Daten mit dem Probetool mal angeschaut. Das sieht auf den ersten Blick alles wunderbar aus, allerdings klicke ich mich jetzt nicht durch 2 Mio Pixel. Kann man so große Datenströme auch übersichtlicher angucken?
Und nicht zuletzt hab ich einen negativen Wert...
Ich hab die beiden Arrays mal 2 Dimensional gelassen und dann verglichen, aber es gibt immer noch einen negativen Wert.
Der Datenbereich von I16 ist -32768 bis 32767. Bei Aufaddition von > 2.Mio 0/1 Werten kann es schon zu einem Überlauf kommen.
Gruß, Jens
ok und wie ändere ich das? Ich weiß nur wie ich das bei Control- oder Indicator Elementen ändere, abe nicht bei Funktionen?
Hallo Itaurus,
vielleicht mit einer kleinen Funktion zum Datentyp-Ändern direkt nach dem "Bool To 0/1"?
Mit dem I32-Datentyp könntest du z.B. locker bis 2*10^9 rechnen…
Sieht jetzt so aus und negative Werte kommen auch nicht mehr so häufig sind, aber da...
Hallo Itaurus,
also ich sehe da immer noch einen CoercionDot im Bild - und der ist für die negativen Werte verantwortlich…
Warum vergleichst du dein Bild nicht mit einem skalaren Wert? Warum erzeugst du dir erst ein Array, bei dem alle Elemente den selben Wert haben?