Tag zusammen,
ich lese Farbbilder einer Kamera ein, die ich dann als numpy-Array vorliegen habe. Da mehrere Bilder nacheinander aufgenommen werden, speicher ich diese in einer Liste ab (hier "Original").
Ich habe nun ein Beispiel gefunden, in dem Rauschen erzeugt, angezeigt und danach durchgerollt wird und wollte dieses auf meine Bedürfnisse anpassen. Habe mal nur mit einem Kanal des Bildes angefangen (Zeile 22).
Jedoch wird das Bild nicht korrekt angezeigt, sondern ebenfalls als Rauschen.
Im folgenden Code habe ich nur Zeile 22 und 23 eingefügt (um mein Bild anzeigen zu lassen) und Zeile 36 und 37 auskommentiert (da das Bild danach ja nicht durchlaufen soll).
Angezeigt wird dann folgendes:
Mit matplotlib sieht das ganze so aus:
Hat jemand einen Tipp, was da falsch läuft?
ich lese Farbbilder einer Kamera ein, die ich dann als numpy-Array vorliegen habe. Da mehrere Bilder nacheinander aufgenommen werden, speicher ich diese in einer Liste ab (hier "Original").
Ich habe nun ein Beispiel gefunden, in dem Rauschen erzeugt, angezeigt und danach durchgerollt wird und wollte dieses auf meine Bedürfnisse anpassen. Habe mal nur mit einem Kanal des Bildes angefangen (Zeile 22).
Jedoch wird das Bild nicht korrekt angezeigt, sondern ebenfalls als Rauschen.
Im folgenden Code habe ich nur Zeile 22 und 23 eingefügt (um mein Bild anzeigen zu lassen) und Zeile 36 und 37 auskommentiert (da das Bild danach ja nicht durchlaufen soll).
Code:
class mainWindow():
times=1
timestart=time.clock()
data=numpy.array(numpy.random.random((400,500))*900,dtype=numpy.uint16)
def __init__(self):
self.root = tkinter.Toplevel()
self.frame = tkinter.Frame(self.root, width=454, height=256)
self.frame.pack()
self.canvas = tkinter.Canvas(self.frame, width=454, height=256)
self.canvas.place(x=-2,y=-2)
xdata = b'P5 500 400 255 ' + self.data.tobytes()
self.photo = tkinter.PhotoImage(width=454, height=256, data=xdata, format='PPM')
self.imid = self.canvas.create_image(0,0,image=self.photo,anchor=tkinter.NW)
self.root.after(2000,self.start) # INCREASE THE 0 TO SLOW IT DOWN
self.root.mainloop()
def start(self):
global data
global Original
Bild = Original[0][:,:,0]
data=numpy.array(Bild,dtype=numpy.uint16)
xdata = b'P5 500 400 255 ' + numpy.clip(self.data,0,255).tobytes()
self.photo = tkinter.PhotoImage(width=454, height=256, data=xdata, format='PPM')
if True:
self.canvas.itemconfig(self.imid, image = self.photo)
else:
self.canvas.delete(self.imid)
self.imid = self.canvas.create_image(0,0,image=self.photo,anchor=tkinter.NW)
self.times+=1
if self.times%33==0:
print("%.02f FPS"%(self.times/(time.clock()-self.timestart)))
self.root.update()
# self.root.after(10,self.start)
# self.data=numpy.roll(self.data,-1,1)
if __name__ == '__main__':
x=mainWindow()
Angezeigt wird dann folgendes:
Mit matplotlib sieht das ganze so aus:
Hat jemand einen Tipp, was da falsch läuft?