Seite 1 von 2
Re: Fadenkreuz auf kamerabild
Verfasst: Dienstag 3. Juli 2018, 19:17
von Tholo
Du kannst doch über das Netzwerk auf den Pi Zugreifen. Zb SSH oder VNC Viewer. Da ist doch egal wo der verbaut ist
Re: Fadenkreuz auf kamerabild
Verfasst: Mittwoch 4. Juli 2018, 15:40
von Streifenhase1
Ja leider kann ich es nicht über Netzwerk etc. machen da ich nicht in das Netzwerk gelassen werde bzw. der Raspberry auch nicht ins Netzwerk darf:(
So hab jetzt das Overlay hin bekommen.
Und zwar scheint bei dem Code von PiCamera Docs ein Fehler zu sein.
http://picamera.readthedocs.io/en/relea ... he-preview
Habe Folgende Zeile geändert
Code: Alles auswählen
o = camera.add_overlay(np.getbuffer(a), layer=3, alpha=64)
in
o = camera.add_overlay(a.tobytes(), layer=3, alpha=64)
jetzt hab ich somit ein Fadenkreuz. Jetzt stehe ich aber vor weiteren Problemen.
Versuch es mal kurz zu erklären
in Meinem Programm Wird das Kamerabild nur in einem Fenster angezigt und ich möchte das Fadenkreuz nur mittig auf dem Bild haben und nicht über die gesamte breite.
erst habe ich mir Überlegt einfach das Overlay kleiner zu machen aber das Funktioniert nich. Bekomme den Fehler das die größe des Bildes und des Oberlays nicht gleich sind.
[/Python]
dann habe ich es über die werte in dieser Zeile mit den Postionen versucht, Konnte die Linie zwar nach rechts verschieben so das es rechts passen würde aber links halt noch bis zum Bildrand geht.
Bin ich da auf dem Holzweg?
vorerst noch eine letzte Frage
Kann ich auch kreise mit numpy zeichnen?
Re: Fadenkreuz auf kamerabild
Verfasst: Mittwoch 4. Juli 2018, 15:52
von __deets__
Das overlay muss genau so gross sein wie das Kamerabild. Da wird halt nicht automatisch fuer dich skaliert. Aber niemand hindert dich daran, ein genauso grosses Bild zu machen, auf dem du einfach ein kleineres Fadenkreuz malst. Woher kommt denn dein numpy array bisher?
Re: Fadenkreuz auf kamerabild
Verfasst: Mittwoch 4. Juli 2018, 17:02
von __blackjack__
@Streifenhase1: Erklärst Du jetzt tatsächlich Deine uralte Numpy-Version zu einem Fehler in der Dokumentation von PiCamera‽
Re: Fadenkreuz auf kamerabild
Verfasst: Mittwoch 4. Juli 2018, 18:16
von Streifenhase1
@blackjack
Nein das mache ich nicht!
numpy hab ich auf die aktuelle Version gebracht. 1.14.
Dennoch kam der Fehler nach wie vor.
Wenn ich es über ein Bild mach kann ich es dann noch verschieben
Re: Fadenkreuz auf kamerabild
Verfasst: Mittwoch 4. Juli 2018, 22:03
von __deets__
Es sollte gehen, ja. Wie genau ist allerdings nicht ganz klar. Du kannst so oder so zb mit Pillow den Fadenkreuz auch malen, und dann in ein numpy Array wandeln.
Was dann aber wichtig ist: das resultierende Bild darf NICHT mit add_overlay hinzugefügt werden! Stattdessen musst du update auf dem von add_overlay zurück gegebenen PiOverlayRenderer Objekt aufrufen. Ist hier dokumentiert:
http://picamera.readthedocs.io/en/relea ... ayrenderer
Re: Fadenkreuz auf kamerabild
Verfasst: Donnerstag 5. Juli 2018, 13:23
von Streifenhase1
Code: Alles auswählen
import picamera
from PIL import Image
from time import sleep
with picamera.PiCamera() as camera:
camera.start_preview()
img = Image.open('lol.gif')
pad = Image.new('RGBA', (
((img.size[0] + 31) // 32) * 32,
((img.size[1] + 15) // 16) * 16,
))
pad.paste(img, (0, 0), img)
o = camera.add_overlay(pad.tostring(), size=img.size)
o.alpha = 255
o.layer = 3
while True:
sleep(1)
Danke für den Tip.
Bin dadurch auf die Idee gekommen ein .PNG einzubinden was auch klappt.
Jetzt hänge ich aber daran wie ich die Position des Bildes festlegen kann und das Bild skalieren kann.
Hier der testcode
Re: Fadenkreuz auf kamerabild
Verfasst: Donnerstag 5. Juli 2018, 13:37
von __deets__
Du kopierts das Bild in sich selbst. Das ist doch ziemlich sinnlos. Lade ein kleineres Fadenkreuz-Bild, und paste es in ein leeres Bild, das so gross ist, wie das Kamera-Bild. Die Angabe (0, 0) ist deine Koordinate, die kannst du doch aendern im Bereich 0 bis gesamtbreite-fadenkreuzbreite (gleiches fuer die Hoehe)
Re: Fadenkreuz auf kamerabild
Verfasst: Donnerstag 5. Juli 2018, 15:45
von Streifenhase1
klingt logisch...
könntest du mir das so umschreiben?
so geht es bestimmt nicht oder?
Könnte es erst morgen probieren
Code: Alles auswählen
bg = Image.open('bg.png')
img = Image.open('test.png')
pad = Image.new('RGBA', (
((bg.size[0] + 31) // 32) * 32,
((bg.size[1] + 15) // 16) * 16,
))
pad.paste(img, (0, 0), )
Re: Fadenkreuz auf kamerabild
Verfasst: Freitag 6. Juli 2018, 14:55
von Streifenhase1
[Ja hab es hin bekommen.
Wenn jemand noch eine Tip hat wie ich jetzt noch hin bekomme das PNG über Buttons zu verschieben währe super.
Die Buttons habe ich und die Position habe ich mit
Angegeben
Re: Fadenkreuz auf kamerabild
Verfasst: Samstag 7. Juli 2018, 16:54
von Streifenhase1
Hab jetzt mal etwas probiert um das Fadenkreuz über Buttons zu verschieben, allerdings erfolglos.
Hier die Buttons die erstellt habe zum bewegen des Fadenkreuzes
Code: Alles auswählen
shu1_button = Button(self, text="links", background='steelblue1', activebackground='steelblue3', command=self.flinks)
shu1_button.place(x = 100, y = 410, width=60, height=40)
shu2_button = Button(self, text="rechts", background='steelblue1', activebackground='steelblue3', command=self.frechts)
shu2_button.place(x = 20, y = 410, width=60, height=40)
Dann die Funktion für die Buttons, die allerdings nicht funktionieren
Code: Alles auswählen
def flinks(self):
global fx
wert = 5
fx = min(100, fx + wert)
self.fx.set(self.fx.get() + wert)
def frechts(self):
global fx
wert = 5
fx = min(100, fx + wert)
self.fx.set(self.fx.get() - wert)
und noch das eingebunden Fadenkreuz
Code: Alles auswählen
def capture(self):
print("Capture")
camera.start_preview()
img = Image.open('test.png')
pad = Image.new('RGBA',(
((img.size[0] + 31) // 32) * 32,
((img.size[1] + 15) // 16) * 16,
))
pad.paste(img, (fx, fy),)
o = camera.add_overlay(pad.tostring(), size=img.size)
o.alpha = 25
o.layer = 4
Re: Fadenkreuz auf kamerabild
Verfasst: Sonntag 8. Juli 2018, 02:38
von __deets__
Du musst das overlay manipulieren. Wie ich oben schrieb. Speicher das von add_overlay zurück gegebene Objekt & ruf darauf Update mit der neuen Grafik auf.
Re: Fadenkreuz auf kamerabild
Verfasst: Montag 9. Juli 2018, 21:19
von Streifenhase1
@__deets__ Kling ja logisch aber komme leider nicht weiter.
Hat jemand vielleicht ein Beispiel Code zur hand... währe echt dankbar
Re: Fadenkreuz auf kamerabild
Verfasst: Donnerstag 12. Juli 2018, 11:39
von Streifenhase1
leider komm ich nach wienvoe nicht weiter.
sollte mir vielleicht ein Buch zu Python zulegen.
habt ihr dafür Empfehlungen von deutschsprachigen Büchern.
trotzdem bitte ich noch mal um Hilfe
Ich starte meine kamera preview mit overlay
Code: Alles auswählen
def capture(self):
print("Capture")
camera.start_preview()
img = Image.open('test.png')
pad = Image.new('RGBA',(
((img.size[0] + 31) // 32) * 32,
((img.size[1] + 15) // 16) * 16,
))
pad.paste(img, (fx, fy),)
o = camera.add_overlay(pad.tostring(), size=img.size)
o.alpha = 25
o.layer = 4
Und möchte es mit
Code: Alles auswählen
def stop(self):
print("Stop Capture")
camera.stop_preview()
leider wird nur die Preview der Kamera beendet jedoch nicht das Overlay
könnt ihr mir zeigen wie ich das umsetze?
beim kopieren des Codes stimmen die einrücken nicht im Programm selber passt es aber