Hallo
Kann mir jemand helfen wie ich auf das Picamera live Bild ein Fadenkreuz bekomme?
Fadenkreuz auf kamerabild
Eines auf eine Folie malen, und die vor die Kamera halten?
Im Ernst: wenn du Hilfe moechtest, musst du uns schon den Code zeigen, den du benutzt (mit Code-Tags posten!), und ein bisschen weiter ausholen, was genau du machst und was du erreichen willst.
Im Ernst: wenn du Hilfe moechtest, musst du uns schon den Code zeigen, den du benutzt (mit Code-Tags posten!), und ein bisschen weiter ausholen, was genau du machst und was du erreichen willst.
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
Einfach erst mal Picamera starten
Die Kamera Einstellungen hab ich jetzt mal weg gelassen.
Jetzt habe ich das Bild
Darauf hätte ich gern eine Art Fadenkreuz
Eine horizontale und vertikale Linie und zwei Kreise.
Die Kamera Einstellungen hab ich jetzt mal weg gelassen.
Code: Alles auswählen
Camera.start_preview
Darauf hätte ich gern eine Art Fadenkreuz
Eine horizontale und vertikale Linie und zwei Kreise.
Achso. Jetzt ist es VIEL klarer.
Alles was du tun musst ist ein overlay hinzufuegen, dass transparent machen, und in der Ebene oberhalb der Vorschau anordnen, so dass es darueber dargestellt wird. Sollte jetzt ja klar sein, Code braucht hier ja keiner.....
Alles was du tun musst ist ein overlay hinzufuegen, dass transparent machen, und in der Ebene oberhalb der Vorschau anordnen, so dass es darueber dargestellt wird. Sollte jetzt ja klar sein, Code braucht hier ja keiner.....
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
Doch ich bräuchte einen Code. Würde den den ich habe ja Posten komme aber da gerade nicht ran.
Bin auf Arbeit und kann nur über Handy schreiben.
Bin auf Arbeit und kann nur über Handy schreiben.
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
Also so richtig bekomme ich es nicht hin.
Hier mal der gesamte Code des Programmes.
Hätte jetzt noch gern eine Art Fadenkreuz über dem Kamerabild.
Vielleicht kann sich das mal jemand anschauen und vielleicht eine Starthilfe geben.
Danke
Hier mal der gesamte Code des Programmes.
Hätte jetzt noch gern eine Art Fadenkreuz über dem Kamerabild.
Vielleicht kann sich das mal jemand anschauen und vielleicht eine Starthilfe geben.
Danke
Code: Alles auswählen
from tkinter import *
from tkinter import messagebox
import tkinter as tk
import picamera
APP_TITLE = "Kamera"
APP_XPOS = 10
APP_YPOS = 10
APP_WIDTH = 1280
APP_HEIGHT = 800
Hintergrundbild = "Hintergrund.gif"
camera = picamera.PiCamera(resolution=(1920,1080))
cam_bri = 30
cam_con = 60
cam_shu = 20000
cam_iso = 100
camera.brightness = cam_bri
camera.contrast = cam_con
camera.shutter_speed = cam_shu
camera.iso = cam_iso
camera.vflip=False
camera.hflip=False
camera.awb_mode='auto'
camera.exposure_mode='sports'
camera.video_stabilization=True
camera.preview_fullscreen=False
camera.preview_window=(200, 50, 1050, 800)
class Settings(tk.Toplevel):
def __init__(self, parent, noborder=True):
super().__init__(parent)
self.title("Settings")
self.geometry("{}x{}".format(180, 500))
self.geometry("+{}+{}".format(10, 200))
self.configure(bg='steelblue1')
self.wm_overrideredirect(noborder)
self.cambri_threshold = tk.IntVar(value=cam_bri)
self.camcon_threshold = tk.IntVar(value=cam_con)
self.camiso_threshold = tk.IntVar(value=cam_iso)
self.camshu_threshold = tk.IntVar(value=cam_shu)
main_frame = tk.Frame(self)
main_frame .pack(padx=10, pady=10)
settings_label = Label(self, bg="steelblue1", text="Einstellungen")
settings_label.place(x = 20, y = 5, width=150, height=40)
settings_label.config(font=("Arial", 15))
##Helligkeit##
anweisungs_label = Label(self, bg="steelblue1", text="Helligkeit")
anweisungs_label.place(x = 50, y = 50, width=80, height=40)
anweisungs_label.config(font=("Arial", 12))
bri_label = Label(self, bg="steelblue1", textvariable=self.cambri_threshold)
bri_label.place(x = 50, y = 90, width=80, height=40)
bri_label.config(font=("Arial", 12))
bri1_button = Button(self, text="+", background='steelblue1', activebackground='steelblue3', command=self.cambri1)
bri1_button.place(x = 120, y = 90, width=40, height=40)
bri2_button = Button(self, text="-", background='steelblue1', activebackground='steelblue3', command=self.cambri2)
bri2_button.place(x = 20, y = 90, width=40, height=40)
##Kontrast##
anweisungs_label = Label(self, bg="steelblue1", text="Kontrast")
anweisungs_label.place(x = 50, y = 130, width=80, height=40)
anweisungs_label.config(font=("Arial", 12))
con_label = Label(self, bg="steelblue1", textvariable=self.camcon_threshold)
con_label.place(x = 50, y = 170, width=80, height=40)
con_label.config(font=("Arial", 12))
con1_button = Button(self, text="+", background='steelblue1', activebackground='steelblue3', command=self.con1)
con1_button.place(x = 120, y = 170, width=40, height=40)
con2_button = Button(self, text="-", background='steelblue1', activebackground='steelblue3', command=self.con2)
con2_button.place(x = 20, y = 170, width=40, height=40)
##ISO##
anweisungs_label = Label(self, bg="steelblue1", text="ISO-Wert")
anweisungs_label.place(x = 50, y = 210, width=80, height=40)
anweisungs_label.config(font=("Arial", 12))
iso_label = Label(self, bg="steelblue1", textvariable=self.camiso_threshold)
iso_label.place(x = 50, y = 250, width=80, height=40)
iso_label.config(font=("Arial", 12))
iso1_button = Button(self, text="+", background='steelblue1', activebackground='steelblue3', command=self.Iso1)
iso1_button.place(x = 120, y = 250, width=40, height=40)
iso2_button = Button(self, text="-", background='steelblue1', activebackground='steelblue3', command=self.Iso2)
iso2_button.place(x = 20, y = 250, width=40, height=40)
##Belichtung##
anweisungs_label = Label(self, bg="steelblue1", text="Belichtung")
anweisungs_label.place(x = 50, y = 290, width=80, height=40)
anweisungs_label.config(font=("Arial", 12))
shu_label = Label(self, bg="steelblue1", textvariable=self.camshu_threshold)
shu_label.place(x = 50, y = 330, width=80, height=40)
shu_label.config(font=("Arial", 12))
shu1_button = Button(self, text="+", background='steelblue1', activebackground='steelblue3', command=self.shu1)
shu1_button.place(x = 120, y = 330, width=40, height=40)
shu2_button = Button(self, text="-", background='steelblue1', activebackground='steelblue3', command=self.shu2)
shu2_button.place(x = 20, y = 330, width=40, height=40)
Quit_button = Button(self, text="schließen", background='steelblue1', activebackground='steelblue3', command=self.destroy)
Quit_button.place(x = 25, y = 430, width=120, height=40)
#####################################################
def cambri1(self):
global cam_bri
wert = 5
cam_bri = min(100, cam_bri + wert)
camera.brightness = cam_bri
self.cambri_threshold.set(self.cambri_threshold.get() + wert)
def cambri2(self):
global cam_bri
wert = 5
cam_bri = min(100, cam_bri - wert)
camera.brightness = cam_bri
self.cambri_threshold.set(self.cambri_threshold.get() - wert)
def con1(self):
global cam_con
wert = 5
cam_con = min(100, cam_con + wert)
camera.contrast = cam_con
self.camcon_threshold.set(self.camcon_threshold.get() + wert)
def con2(self):
global cam_con
wert=5
cam_con = min(100, cam_con - wert)
camera.contrast = cam_con
self.camcon_threshold.set(self.camcon_threshold.get() - wert)
def Iso1(self):
global cam_iso
wert = 50
cam_iso = min(800, cam_iso + wert)
camera.iso = cam_iso
self.camiso_threshold.set(self.camiso_threshold.get() + wert)
def Iso2(self):
global cam_iso
wert = 50
cam_iso = min(800, cam_iso - wert)
camera.iso = cam_iso
self.camiso_threshold.set(self.camiso_threshold.get() - wert)
def shu1(self):
global cam_shu
wert = 5000
cam_shu = min(1000000, cam_shu + wert)
camera.shutter_speed = cam_shu
self.camshu_threshold.set(self.camshu_threshold.get() + wert)
def shu2(self):
global cam_shu
wert = 5000
cam_shu = min(1000000, cam_shu - wert)
camera.shutter_speed = cam_shu
self.camshu_threshold.set(self.camshu_threshold.get() - wert)
############## Hauptfenster############
class MainFrame(tk.Frame):
def __init__(self, haupt_fenster):
super().__init__(haupt_fenster)
self.haupt_fenster = haupt_fenster
self.haupt_fenster.protocol("WM_DELETE_WINDOW", self.close)
self.build()
def build(self):
button_frame = tk.Frame(self)
button_frame.pack(pady=5)
button_frame.configure(bg='steelblue1')
tk.Button(button_frame, text=" Starten", background='steelblue1', activebackground='steelblue3', command=self.capture).pack(side='left', padx=4)
tk.Button(button_frame, text="Stopen", background='steelblue1', activebackground='steelblue3', command=self.stop).pack(side='left', padx=4)
tk.Button(button_frame, text="Einstellungen", background='steelblue1',activebackground='steelblue3', command=self.set_fenster).pack(side='left', padx=4)
exit_button = tk.Button(button_frame, text="Beenden", background='steelblue1', activebackground='steelblue3', command=self.close).pack(side='left', padx=4)
tk.Button(button_frame, text="Info", background='steelblue1', activebackground='steelblue3', command=self.action_get_info_dialog).pack(side='left', padx=4)
def capture(self):
print("Capture")
camera.start_preview()
def set_fenster(self):
print("set_fenster")
self.settings = Settings(self.haupt_fenster)
def action_get_info_dialog(self):
print("action_get_info_dialog")
camera.stop_preview()
m_text = "\
************************\n\
Autor: \n\
Date: 31.05.18\n\
Version: 1.03\n\
************************"
messagebox.showinfo(message=m_text, title = "Infos")
# messagebox.askyesno(message=m_text, title = "Infos")
def stop(self):
print("Stop")
camera.stop_preview()
def close(self):
print("Application-Shutdown")
self.master.destroy()
camera.stop_preview()
def main():
haupt_fenster = tk.Tk()
haupt_fenster.title(APP_TITLE)
haupt_fenster.overrideredirect(True)
haupt_fenster.geometry("{0}x{1}+0+0".format(haupt_fenster.winfo_screenwidth(), haupt_fenster.winfo_screenheight()))
#haupt_fenster.geometry("+{}+{}".format(APP_XPOS, APP_YPOS))
#haupt_fenster.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT))
haupt_fenster.option_add("*highlightThickness", 0)
haupt_fenster.configure(bg='steelblue1')
background_image = tk.PhotoImage(file=Hintergrundbild)
tk.Label(haupt_fenster, image=background_image).place(x=0, y=0)
main_frame = MainFrame(haupt_fenster)
main_frame.pack(fill='both', expand=False, padx=0, pady=0,)
main_frame.configure(bg='steelblue1')
haupt_fenster.mainloop()
if __name__ == '__main__':
main()
- __blackjack__
- User
- Beiträge: 13112
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Streifenhase1: Wo ist denn das Problem mit der Starthilfe die __deets__ gegeben hat? Ich sehe da nirgends das Du das in Deinen Code eingebaut hättest. Wo ist denn das Problem dabei?
Du solltest übrigens bei Gelegenheit den *-Import aus `tkinter` loswerden. Du importierst das doch auch schon mit ``import tkinter as tk`` und nutzt dann mal den einen und mal den anderen Weg um die Objekte aus dem Modul zu verwenden.
Du solltest übrigens bei Gelegenheit den *-Import aus `tkinter` loswerden. Du importierst das doch auch schon mit ``import tkinter as tk`` und nutzt dann mal den einen und mal den anderen Weg um die Objekte aus dem Modul zu verwenden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
Ja ok mit dem tkinker schau ich mir an.
Ich weiß nicht so recht wo ich das Overlay im Code einsetz bzw. Wie ich halt die Linie hin bekomme.
Für mich ist es momentan einfacher wenn ich einen Code finde der ähnlich ist wie ich ihn brauche. Kann mich dann besser reindenken.
Bin noch sehr unerfahren was das Programieren angeht
Ich weiß nicht so recht wo ich das Overlay im Code einsetz bzw. Wie ich halt die Linie hin bekomme.
Für mich ist es momentan einfacher wenn ich einen Code finde der ähnlich ist wie ich ihn brauche. Kann mich dann besser reindenken.
Bin noch sehr unerfahren was das Programieren angeht
- __blackjack__
- User
- Beiträge: 13112
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Streifenhase1: Der Code ist doch so ähnlich wie Du ihn brauchst. Schau was Du davon schon hast. Danach kannst Du dann den einfügen den Du noch nicht hast.
Wobei das kein guter Weg ist sich immer nur Versatzstücke von woanders zu kopieren ohne sie zu verstehen. So funktioniert programmieren nicht, und so lernt man es auch nicht.
Wobei das kein guter Weg ist sich immer nur Versatzstücke von woanders zu kopieren ohne sie zu verstehen. So funktioniert programmieren nicht, und so lernt man es auch nicht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
Ich habe jetzt diesen Code zum ausprobieren genommen.
Erhalte aber die Fehlermeldung.
Line12
Attribute Error: Module Objekt Gas no Attribute 'getbuffer'
Jemand ne Idee hab ich was vergessen
Code: Alles auswählen
import time
import picamera
import numpy as np
# Create an array representing a 1280x720 image of
# a cross through the center of the display. The shape of
# the array must be of the form (height, width, color)
a = np.zeros((720, 1280, 3), dtype=np.uint8)
a[360, :, :] = 0xff
a[:, 640, :] = 0xff
with picamera.PiCamera() as camera:
camera.resolution = (1280, 720)
camera.framerate = 24
camera.start_preview()
# Add the overlay directly into layer 3 with transparency;
# we can omit the size parameter of add_overlay as the
# size is the same as the camera's resolution
o = camera.add_overlay(np.getbuffer(a), layer=3, alpha=64)
try:
# Wait indefinitely until the user terminates the script
while True:
time.sleep(1)
finally:
camera.remove_overlay(o)
Line12
Attribute Error: Module Objekt Gas no Attribute 'getbuffer'
Jemand ne Idee hab ich was vergessen
Bitte nicht Fehlermeldungen selbst abschreiben, sondern kopieren. Und zwar in Gaenze. Das macht allen Beteiligten das Leben leichter. Denn du packst da auch noch kraeftig Fehler rein (Gas gibt es nirgendswo in deinem Code. Das soll "has" sein). Und das das Zeile 12 sein soll, kann ich mir kaum vorstellen. Die einzige Zeile, in der getbuffer vorkommt, ist 19!
Welche Version hat numpy? Bitte mal die Ausgabe von
print(np.__version__)
hier posten. Und die Zeile muss am besten direkt nach den import.
Welche Version hat numpy? Bitte mal die Ausgabe von
print(np.__version__)
hier posten. Und die Zeile muss am besten direkt nach den import.
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
Ja du hast natürlich recht mit der Zeile.
Würde den Code kopieren aber der raspberry ist in einer Anlage verbaut und komme da schlecht ran. Würde es am PC machen aber da ich da kein kameramodul habe klappt das da nicht so.
Die Version von numpy ist 1.8.2
Würde den Code kopieren aber der raspberry ist in einer Anlage verbaut und komme da schlecht ran. Würde es am PC machen aber da ich da kein kameramodul habe klappt das da nicht so.
Die Version von numpy ist 1.8.2
- __blackjack__
- User
- Beiträge: 13112
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Streifenhase1: Wo der verbaut ist hat doch keinen Einfluss darauf das man Fehlermeldungen einfach kopiert statt sie abzutippen‽
Wenn `numpy` so alt ist, stellt sich vielleicht die Frage ob Du das System auf dem Raspi nicht generell mal upgraden solltest. Also zumindest wenn die uralte `numpy`-Version aus den Linux-Paketquellen kommt. Auf meinem OSMC-Raspi ist Numpy 1.12.1 aus den Paketquellen installiert. Und das kennt `getbuffer()`.
Wenn `numpy` so alt ist, stellt sich vielleicht die Frage ob Du das System auf dem Raspi nicht generell mal upgraden solltest. Also zumindest wenn die uralte `numpy`-Version aus den Linux-Paketquellen kommt. Auf meinem OSMC-Raspi ist Numpy 1.12.1 aus den Paketquellen installiert. Und das kennt `getbuffer()`.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
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
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?
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)
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.
Code: Alles auswählen
[Python]
a[360, :, :] = 0xff
a[:, 640, :] = 0xff
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?
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?
- __blackjack__
- User
- Beiträge: 13112
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Streifenhase1: Erklärst Du jetzt tatsächlich Deine uralte Numpy-Version zu einem Fehler in der Dokumentation von PiCamera‽
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 90
- Registriert: Dienstag 22. Mai 2018, 07:15
@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
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