Unvorhergesehener Programmabsturz

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Grossmeister_C
User
Beiträge: 36
Registriert: Montag 26. Februar 2007, 15:53

Hallo Leute. Ich habe gerade angefangen mich mit Videofiltern in Python zu beschäftigen. Zu dem Zweck habe ich ein kleines Programm zusammengesetzt das Bilder von einer Webcam captured, Pixel für Pixel Anhand einer bestimten Regel durchsucht und dann die den kriterien entsprechenden Pixel ersetzt. Funktioniert auch alles ganz wunderbar, nur crasht mir das Programm nach einer gewissen Laufzeit immer wieder. Mir ist auch aufgefallen das das Programm eine wachsende Menge an Speicher konsumiert und ich konnte nicht entdecken wo in meinem Code dies geschieht. Vielleicht habe ich ja heute auch einfach nur ein Brett vor dem Kopf, wäre dankbar wenn mal jemand schauen könnte ob ich nicht etwas wichtiges übersehen habe. Im voraus schonmal vielen Dank.

Das ganze läuft übrigens auf einem Rechner unter Windows XP unter Zuhilfenahme von "VideoCapture" : http://videocapture.sourceforge.net/
"PIL" und "PyGame".

Hier der Programmcode:

Code: Alles auswählen

from VideoCapture import Device
import pygame
import random

replacementcolor = (0, 255, 0)
pixelMem = []
counter = 0
black = (0, 0, 0)

#init Capture Device
cam = Device()

#init Display
size = width, height = 640, 400
screen = pygame.display.set_mode(size)

#------------------------------------------------------------#
#mainloop
while True:
    img = cam.getImage()  
    primList = list(img.getdata())

    #Filtern der gesuchten Pixel
    for i in primList:
    
        if i[0]>200:                #Filterregel
            pixelMem.append(counter)
        counter += 1
    counter = 0

    #Ersetzen der Pixel
    for pixelNr in pixelMem:
        primList[pixelNr] = replacementcolor

    #Rieckschreiben des Pixelsequenz in das img
    img.putdata(primList)

    #img fuer Pygame ladbar machen ; PIL image --> string
    mode = img.mode
    size = img.size
    data = img.tostring()

    #laden des bildes vom string
    display_pic = pygame.image.fromstring(data, size, mode)
    display_pic_rect = display_pic.get_rect()

    #Bild zeichnen und sichtbar machen
    screen.fill(black)
    screen.blit(display_pic, display_pic_rect)
    pygame.display.flip()
Zuletzt geändert von Grossmeister_C am Donnerstag 12. April 2007, 16:16, insgesamt 1-mal geändert.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Nun mal so aus dem Handgelenk: pixelMem wird immer größer, oder?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Grossmeister_C
User
Beiträge: 36
Registriert: Montag 26. Februar 2007, 15:53

N317V hat geschrieben:Nun mal so aus dem Handgelenk: pixelMem wird immer größer, oder?
Ehm ja, hatte auch die falsche Version gepostet :oops:

Korrigiere gleich mal. Habe aber dasselbe Problem wenn das behoben ist.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Das ist jetzt zwar ne andere Version aber pixelMem wird immernoch immer größer, oder?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Grossmeister_C
User
Beiträge: 36
Registriert: Montag 26. Februar 2007, 15:53

Ok, schon klar. Auch mit dieser Änderung wechselt PixelMem immer weiter. Ich muß bevor ich eine neue Nummer der Liste hinzufüge testen ob die Pixelnummer schon in der Liste existiert....

Danke für den Denkanstoß !
Grossmeister_C
User
Beiträge: 36
Registriert: Montag 26. Februar 2007, 15:53

N317V hat geschrieben:Das ist jetzt zwar ne andere Version aber pixelMem wird immernoch immer größer, oder?
Ja, habe ich auch gerade gesehen. Habe irgendwie ein Brett vorm Kopf.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Grossmeister_C hat geschrieben:Habe irgendwie ein Brett vorm Kopf.
Dafür gibt's ja Foren :wink:
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Grossmeister_C
User
Beiträge: 36
Registriert: Montag 26. Februar 2007, 15:53

N317V hat geschrieben:
Grossmeister_C hat geschrieben:Habe irgendwie ein Brett vorm Kopf.
Dafür gibt's ja Foren :wink:
Zum Glück :shock:
Antworten