Seite 1 von 1

Feld mit ca 800 werten überprüfen

Verfasst: Montag 28. Juli 2008, 08:43
von Xisto
Hi
ich such in einem Feld was über 300000 Werte hat die stelle wo min. 800 mal die null in Folge kommt. Leider kenn ich nur einen weg wie unten angezeigt der ist aber bei 800 werten etwas unprarktisch. Kennt jemand eine möglich keit wie ich viele gleiche werte in einem Feld überprüfen kann.
Ziel von mir ist eine horonzontale Line von min 800pixeln zu finden.

Code: Alles auswählen

img=Image.open('c:\\test.bmp')
img = img.convert("L")

size = img.size
srcImg = img.getdata()
zaehler = size[0] * size[1]
srcImg = list(img.getdata())

for x in range(0,zaehler+1,3):
      srcImg2 = srcImg[x:x+3]
      if srcImg2 == [0,0,0] :
               print 'gefunden'

Verfasst: Montag 28. Juli 2008, 09:22
von Hyperion
Wieso nicht einfach über einer Liste iterieren und einen Zähler laufen lassen? Zusätzlich die Startposition einer Sequenz merken und bei Erreichen einer Grenze dann entsprechend rausspringen (oder was auch immer tun).

Verfasst: Montag 28. Juli 2008, 09:57
von numerix
Du könntest auch das Feld mittels join() in eine Zeichenkette umwandeln und dann prüfen, an welcher Stelle '000'*800 vorkommt:

Code: Alles auswählen

# Dummy-Daten erzeugen
from random import randrange

randompos = randrange(299000)
data = [randrange(256) for k in xrange(randompos)]+[0]*800+ \
       [randrange(256) for k in xrange(299200-randompos)]

# Jetzt kommt's:
try:
    nullpos = "".join(['%03i' %n for n in data]).index('0'*2400)//3
except ValueError:
    nullpos = None

# Das war's:
print nullpos