Danke, dann werde ich das einfach mal ausprobieren
Posts by Eggy
-
-
Hi,
ich Versuche variable Namen als Variablen zu benutzen.
Ich habe mit dem Cameramodul des Raspberry Pi ein Trackingprogramm gebastelt, welches mir jetzt immer die Daten eines Rechtecks des gefunden Objekte wiedergibt und in einer Datei speichert. Das Format sieht so aus :
1 09-58-56
(468, 284, 32, 33)
(85, 272, 27, 29)
(249, 229, 42, 40)2 09-58-57
(469, 284, 32, 33)
(86, 272, 27, 29)
(249, 229, 42, 40)3 09-58-58
(465, 283, 34, 34)
(87, 272, 27, 30)
(250, 229, 41, 41)4 09-58-59
(466, 283, 33, 34)
(86, 273, 25, 29)
(249, 229, 42, 41)Aufbau ist:
Frame\tUhrzeit
Objekt_1(x,y,x-länge,y-länge)Leider habe ich nicht immer nur 3 objekte sonden immer wieder auch Frames mit bis zu 10 Objekten.
Ich will daraus einen Graphen zeichen und dafür einen String mit den einzelnen x- und y-Daten füllen und diese durch unterschiedliche Variablen nach Objekten sortieren.
Meine Idee war :
Codex_string, y_string, x_len_string, y_len_string = z.strip('\n\t\r\s()').split(',') x = int(float(x_string)) y = int(float(y_string)) x_len = int(float(x_len_string)) y_len = int(float(y_len_string)) Object_x[FI][OI]=x #FI - Frame_Index OI- Object_Index Object_y[FI][OI]=yleider sagt mir Python das die Variablen nicht definiert sind. Geht das was ich vor habe überhaupt?
CodeTraceback (most recent call last): File "/root/String.py", line 29, in <module> Object_x[FI][OI]=x NameError: name 'Object_x' is not definedIch bin mir nicht sicher ob ich vor lauter Bäumen den Wald nicht mehr sehe.
Wer es bis hier hin geschaft hat, vielen Dank fürs lesen!
-
Schade das mir keiner helfen wollte.
Falls es jemanden gibt der dennoch gerne wissen will wie ich einen Teil meiner Probleme gelöst habe, hier ist das Programm welches ich momentan verwende. Es ist nicht fertig, sollte aber Funktionieren.Python
Display More#!/usr/bin/env python #-------------------------------------------------------------------------------------------------------- # Biblioteken import Tkinter as tk import tkFileDialog import tkMessageBox import socket import time import datetime as dt import picamera import pygame import os import io import random import sys import math #-------------------------------------------------------------------------------------------------------- class myWindow: #-------------------------------------------------------------------------------------------------------- # Button Placing #------------------------------------------------------------------------------------------------------- def __init__(self): self.mw = tk.Tk() self.mw.option_add("*font", ("Arial", 15, "normal")) #self.mw.geometry("HöhexBreite+Offsetx+Offsety") self.mw.geometry("420x500+75+75") self.mw.title("Mini Projekt") #Globale-Variablen: global ProNr global ProNa global ProVNa global ProZu global Verzeichniss #Funktions-Variablen: ProNr = '123-456-789' ProNa = 'Mustermann' ProVNa = 'Max' ProZu = '' Verzeichniss = '/home/' #Probanten_Nummer: self.Nummer = tk.Label(self.mw, text = "Probanten Nummer:") self.Nummer.place(x = 10, y=10, width= 200, height= 25) self.ProNr = tk.Entry(self.mw) self.ProNr.insert(10, ProNr) self.ProNr.place(x = 210, y=10, width= 200, height= 25) #Probanten_Name: self.Name = tk.Label(self.mw, text = "Probanten Name:") self.Name.place(x = 10, y=50, width= 200, height= 25) self.ProNa = tk.Entry(self.mw) self.ProNa.insert(10, ProNa) self.ProNa.place(x = 210, y=50, width= 200, height= 25) #Probanten_Vorname: self.Vorname = tk.Label(self.mw, text = "Probanten Vorname:") self.Vorname.place(x = 10, y=90, width= 200, height= 25) self.ProVNa = tk.Entry(self.mw) self.ProVNa.insert(10, ProVNa) self.ProVNa.place(x = 210, y=90, width= 200, height= 25) #Probanten_Zusatz: self.Zusatz = tk.Label(self.mw, text = "Zusatzinfo") self.Zusatz.place(x = 10, y=130, width= 200, height= 25) self.ProZu = tk.Entry(self.mw) self.ProZu.insert(10, ProZu) self.ProZu.place(x = 210, y=130, width= 200, height= 75) #Probanten_Browse: self.Browse = tk.Button(self.mw, text = "Browse", command = self.Browse) self.Browse.place(x = 10, y=210, width= 200, height= 25) self.Browse = tk.Entry(self.mw) self.Browse.insert(10,Verzeichniss) self.Browse.place(x = 210, y=210, width= 200, height= 25) #Button Probant Anlegen: self.btn3 = tk.Button(self.mw, text = "Probant anlegen", command = self.Anlegen) self.btn3.place(x = 10, y=250, width= 400, height= 25) #Button #3 Stream Starten self.btn3 = tk.Button(self.mw, text = "Stream starten", command = self.btnClick2) self.btn3.place(x = 10, y=385, width= 200, height= 25) #Button #4 Ausrichtungstest self.btn3 = tk.Button(self.mw, text = "Ausrichtungstest", command = self.btnClick4) self.btn3.place(x = 10, y=425, width= 200, height= 25) #Button Exit self.Exit = tk.Button(self.mw, text = "Exit", command = self.mw.destroy) self.Exit.place(x = 10, y=465, width= 200, height= 25) self.mw.mainloop() #-------------------------------------------------------------------------------------------------------- # Ausrichtungstest #-------------------------------------------------------------------------------------------------------- def btnClick4(self): # Voreinstellungen Loopstop=0 WIDTH=800 HEIGTH=600 FONTSIZE=50 # Kamera initialisieren camera = picamera.PiCamera() camera.vflip = True camera.hflip = True pygame.init() screen = pygame.display.set_mode((WIDTH,HEIGTH)) black = pygame.Color(0,0,0) textcol= pygame.Color(255,255,0) screen.fill(black) while Loopstop < 1: # Bild machen, als GIF speichern, gleiche Größe wie Fenster camera.start_preview() time.sleep(1) camera.capture('image.gif', format='gif', resize=(WIDTH,HEIGTH)) camera.stop_preview() # altes Bild löschen screen.fill(black) pygame.display.update() # Bild einlesen und anzeigen img = pygame.image.load('image.gif') screen.blit(img,(0, 0)) # Datum und Uhrzeit anzeigen font = pygame.font.Font('freesansbold.ttf', FONTSIZE) text = time.strftime ("%d.%m.%Y - %H:%M:%S") #Tag/Monat/Jahr - Stunden:Minuten:Sekunden font_surf = font.render(text, True, textcol) font_rect = font_surf.get_rect() # Holodate Anzeigposition font_rect.left = 100 font_rect.top = 100 screen.blit(font_surf, font_rect) pygame.display.update() # Abfrage Test beenden? result = tkMessageBox.askquestion("Ausrichtungstest Beenden?","Ja\t=\tBeenden\nNein\t=\tRefresh",icon="info") if result == 'no': print ('Ausrichtungstest: Refresh!') Loopstop = 0 else: print ('Ausrichtungstest: Beendet!') Loopstop = 1 # Ende der Testanzeige camera.close() pygame.quit() #-------------------------------------------------------------------------------------------------------- # Stammdaten Speichern #-------------------------------------------------------------------------------------------------------- def Anlegen(self): print ('Erfolderliche Parameter werden aufgelistet:') global Filename global Filepath Name = self.ProNa.get() Vorname = self.ProVNa.get() Zusatz = self.ProZu.get() Nummer = self.ProNr.get() Ordner = self.Browse.get() # %s=string %d = diggit print ('\tPath: %s\n\tProbantennummer: %s\n\t%s %s') % ( Verzeichniss, Nummer, Vorname, Name) #Speicherdatei Name: (Datum)_(Uhrzeit)_(1.Buchstabe: Vorname&Nachname) time = dt.datetime.now().strftime('%Y-%m-%d_%H-%M_') time_2= dt.datetime.now().strftime('%d-%m-%Y') Filename = time+Nummer+'_'+Vorname[0]+Name[0]+'.txt' Filepath = Ordner+ProNr+'_'+time_2+'/' if not os.path.exists(Filepath): os.makedirs(Filepath) print ('\n\t####################\n\tDatei ist unter: \n\t'),Filepath,'\n\tzu finden\n\t####################' #Datei öffnen myfile = file(Filepath+Filename,'w') print('%s wurde geöffnet') % Filename Header = ('Alles was hier rein sollte') myfile.write(Header) myfile.close() #-------------------------------------------------------------------------------------------------------- # Verzeichniss wählen (Dateibrowser) #-------------------------------------------------------------------------------------------------------- def Browse(self): root = tk.Tk() root.withdraw() #ohne diese Zeile öffnet Tkinter ein zweites default window Verzeichniss = tkFileDialog.askdirectory(parent=root, initialdir="/", title='Datei auswählen...') if len (Verzeichniss) > 0: self.Browse.delete(0,100) print ('%s wurde gewählt') % Verzeichniss self.Browse.insert(10,Verzeichniss+'/') #-------------------------------------------------------------------------------------------------------- # Stream Starten #-------------------------------------------------------------------------------------------------------- def btnClick2(self): with picamera.PiCamera() as camera: # Voreinstellungen: camera.resolution = (960, 680) camera.framerate = 24 camera.vflip = True camera.hflip = True Server_IP = '0.0.0.0' Server_Port = 8000 STREAM_LENGTH = 60 #in Seknunden File_Zeitstempel = '%d-%m-%Y_%H-%M-%S.' camera.annotate_text = dt.datetime.now().strftime('%d-%m-%Y / %H:%M:%S') # Serververbindung aufbauen server_socket = socket.socket() server_socket.bind ((Server_IP,Server_Port)) server_socket.listen(0) # Warten bis VLC eingeloggt ist connection = server_socket.accept()[0].makefile('wb') # Aufnahmen starten try: camera.start_preview() camera.start_recording(connection, format='h264', splitter_port=1) camera.start_recording(Filepath+dt.datetime.now().strftime(File_Zeitstempel)+'.h264', format='h264', splitter_port=2) camera.wait_recording() start = dt.datetime.now() # Refresh des Zeitstempel bis Stream bestimmte Länge (in sek) erreicht hat while (dt.datetime.now() - start).seconds < STREAM_LENGTH: camera.annotate_text = dt.datetime.now().strftime('%d-%m-%Y / %H:%M:%S') camera.stop_recording() finally: connection.close() server_socket.close() #-------------------------------------------------------------------------------------------------------- # Hauptfunktion des Programms #-------------------------------------------------------------------------------------------------------- if __name__ == "__main__": app = myWindow() -
Hallo Community,
das ist mein erster Post hier, deshalb erstmal ein "Hallo!" in die Runde.Wie im Titel zu lesen, versuche ich einen Videostream, in einer Datei, zu speichern.
Ich habe mehrere Lösungen im gefährlichen Internetz gefunden, aber noch keine Lösung umsetzen können.Ich sammele erst seit 2 Wochen Erfahrung in Python bzw. Linux, deshalb bitte ich um Entschuldigung wenn ich mit meiner Unwissenheit glänze.
Meine Situation:
Mein Windowsrechner greift über mein LAN (SSH + Exceed laufen) auf meinen Raspberry Pi zu und verwendet die Kamera. Mein Code soll einen Videostream, über Socket, für einen, bzw. später vllt auch mehr, Verbindungen ermöglichen. Der Stream funktioniert, der Zeitstempel, aus mir unbekannten Gründen, leider nur wenn ich keine weiteren Befehle in die while-Schleife schreibe.Was ich brauche/möchte:
Ich möchte das der Videostream von dem Windowsrechner empfangen werden kann, dort gespeichert wird und gleichzeitig auch angezeigt werden kann. Bis jetzt ist es mir nur gelungen eine Datei auf dem RaspPi anzulegen, die leider nicht mit Daten gefüllt wird.Hier die verwendeten Bibs.:
Code
Display Moreimport Tkinter as tk import tkFileDialog import tkMessageBox import socket import time import datetime as dt import picamera import pygame import os import io import randomDie Funktion (aus meinem bisherigem Erguss):
Code
Display Moredef btnClick2(self): with picamera.PiCamera() as camera: camera.resolution = (960, 680) camera.framerate = 24 camera.vflip = True camera.hflip = False STREAM_LENGTH = 60 print 'Flag01' server_socket = socket.socket() server_socket.bind (('0.0.0.0',8000)) server_socket.listen(0) print 'Flag02' connection = server_socket.accept()[0].makefile('wb') print 'Flag03' try: camera.start_preview() camera.annotate_text = dt.datetime.now().strftime('%d-%m-%Y / %H:%M:%S') camera.start_recording(connection, format = 'h264') print 'Flag04' camera.wait_recording() start = dt.datetime.now() while (dt.datetime.now() - start).seconds < STREAM_LENGTH: camera.annotate_text = dt.datetime.now().strftime('%d-%m-%Y / %H:%M:%S') camera.stop_recording() finally: connection.close() server_socket.close()Würdet ihr mir bitte helfen? Ich versuche seit 2 Tagen die Datei richtig zu erstellen.
Eine Datei (.txt) mit Text zu befüllen ist mir gelungen, aber der Videostream ist für mich eine härtere Nuss.Ich verwende Python 2.7.3.