Autor |
Beitrag |
Roboman
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Mi 13.01.10 17:22
Servus Leute,
also ich habe ein kleines Problem, und ja ich habe auch schon einmal gegoogelt.
Es dreht sich um folgendes. Ich lese das Livebild einer Kamra ein die auf nem Roboter von mit aufgebaut ist. So, und ich möchte halt über dieses Bild den Roboter fern steuern. Auch kein Problem, läuft alles super. Windows-PC ist sozusagen die Schaltzentrale und ich kann per Joystick den Roboter über Funk alles steuern.
Jetzt meine Frage. Ich würde gerne ins Live-Bild Texte rein schreiben, sozusagen wie ein HUD im Flugzeug. Ist das irgendwie möglich? Ich verwende das DS-Pack und bin bis jetzt damit sehr zu frieden. Mein Problem ist nicht die Technik, sondern die Software *grins*.
Aber ich hab Delphi in der Techniker-Schule gehabt und seit dem einiges an Software für mich geschrieben, macht sehr viel Spass ist aber auf jeden Fall verbesserungswürdig. *grins*
Für jede Info bin ich sehr dankbar.
// schauen, ob sich durch die Zuweisung der changed-Status überhaupt ändert?!
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
René R.Fo.
      
Beiträge: 116
Win7
Delphi5 Delphi2005
|
Verfasst: Mi 13.01.10 19:02
Also ich habe eine USB Webcam und damit funktioniert es perfekt, weiß aber nicht ob es damit auch bei einer Funkcam geht:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons;
type TForm1 = class(TForm) Button2: TButton; Timer1: TTimer; Image1: TImage; Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private public end;
var Form1 : TForm1; Bitmap: TBitmap; MyRect, MyOther: TRect;
const WM_CAP_DRIVER_CONNECT = WM_USER + 10; WM_CAP_EDIT_COPY = WM_USER + 30; WM_CAP_SET_PREVIEW = WM_USER + 50; WM_CAP_SET_OVERLAY = WM_USER + 51; WM_CAP_SET_PREVIEWRATE = WM_USER + 52;
WM_CAP_DLG_VIDEOFORMAT = WM_USER+41; WM_CAP_DLG_VIDEOSOURCE = WM_USER+42; WM_CAP_DLG_VIDEOCOMPRESSION = WM_USER+46;
implementation
{$R *.dfm}
function capCreateCaptureWindow(lpszWindowName: LPCSTR; dwStyle: DWORD; x, y, nWidth, nHeight: integer; hwndParent: HWND; nID: integer): HWND; stdcall; external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';
procedure TForm1.Button2Click(Sender: TObject); var Handle:THandle; begin Handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0, 0, 320, 240, Panel1.Handle, 1); SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0); sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(handle, wm_cap_set_preview, 1, 0); Application.ProcessMessages;
Timer1.Enabled := True; Label1.Visible := True; end;
procedure TForm1.FormCreate(Sender: TObject); begin Form1.DoubleBuffered := True; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin MyRect := Rect(0,0,160,120); Bitmap := TBitmap.Create; Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack); Image1.Canvas.CopyRect(MyRect,Form1.Canvas,MyRect); Bitmap.Free; end;
end. |
Das ist der geänderte Code^^
_________________ If Promille or Cannabis.Volumen > IQ then
dec(Gehirnzellen.Anzahl);
Zuletzt bearbeitet von René R.Fo. am Do 14.01.10 20:14, insgesamt 1-mal bearbeitet
|
|
Roboman 
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Mi 13.01.10 21:17
Servus Rene,
vielen Dank für die Infos. Jetzt kommt genau der Punkt wo ich sage: "Warum hast du nicht besser aufgepasst?"
Wo ist denn da der Bereich wo man einen Text eingeben kann. Wie gesagt, bin Elektroniker und nur minimal Softwaremensch. 
|
|
René R.Fo.
      
Beiträge: 116
Win7
Delphi5 Delphi2005
|
Verfasst: Do 14.01.10 20:05
Oh Sorry
Ich habe es falsch verstanden ich dachte du suchst denn Code zum ansteuern der Cam
Habe oben denn Code angepasst.
Habe im Anhang nochmal das Projekt wie ich es gelöst habe.
leider nichts besseres gefunden
Mir ist es gerade aufgefallen das es einen Kleinen Fehler gibt mit der Version und möchte mich entschuldigen habe sie erneuert
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von René R.Fo. am Fr 15.01.10 14:18, insgesamt 1-mal bearbeitet
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Fr 15.01.10 00:14
wie gibst du denn dein Bild auf dem Panel aus?
i.A. solltest du mit element.canvas.drawtext o.ä. funktionen gut hinkommen.
Ansonsten wäre auch transparente Labels eine Lösung.
Viel Spaß 
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 15.01.10 07:18
Flamefire hat folgendes geschrieben : | wie gibst du denn dein Bild auf dem Panel aus?
i.A. solltest du mit element.canvas.drawtext o.ä. funktionen gut hinkommen.
Ansonsten wäre auch transparente Labels eine Lösung. |
Beides wird bei DirectX wie es das genannte DSPack ja nutzt vermutlich nicht klappen.
Denn an der Stelle wird der Bereich ja quasi direkt in den Grafikspeicher geschrieben, da wird keine auf ein Canvas gezeichnete Grafik zu sehen sein (ein Panel hat auch gar kein Canvas dachte ich).
Deshalb geht das auch nur mittels DirectShow. Ab DX9 bzw. der in XP integrierten Version 7 geht das.
|
|
Roboman 
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Fr 15.01.10 08:55
Servus Leute,
ja das das mit dem DS-Pack nicht funktioniert hab ich auch schon gemerkt. Die Idee ein transparentes Label zu setzten war das erste und dies halt
im vordergrund zu haben. Aber das wollte nicht so wie ich wollte
Den Rest werde ich am WE einmal alles ausprobieren.
Vielen herzlichen Dank an alle.
|
|
René R.Fo.
      
Beiträge: 116
Win7
Delphi5 Delphi2005
|
Verfasst: Fr 15.01.10 14:15
Flamefire hat folgendes geschrieben : | wie gibst du denn dein Bild auf dem Panel aus? |
in meinem 1.Beitrag der Code Zeile 49-50
Flamefire hat folgendes geschrieben : | i.A. solltest du mit element.canvas.drawtext o.ä. funktionen gut hinkommen.
Ansonsten wäre auch transparente Labels eine Lösung. |
Canvas geht nicht muss man mit timer jede hundertstel Sekunde wiederholen werden und es flackert trotz Form1.DoubleBuffered := True
tranzperentes Label Gute idee Geht aber auch nicht verschwindet in diesem fall
Mit meiner oben im an-gehangenen Version wird erst das bild nochmal kopiert und in einem Image wiedergeben dann geht es mit Label
_________________ If Promille or Cannabis.Volumen > IQ then
dec(Gehirnzellen.Anzahl);
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Fr 15.01.10 15:27
Ok, dann mal folgendes: capCreateCaptureWindow erstellt ein Fenster mit Parent-Window Panel1
Jetzt müsste man aber doch mit diesem Fenster arbeiten können. Also z.b. via WinAPI elemente (Subfenster) darauf unterbringen können.
Schon mal naiv versucht, den Parent eines Labels auf dieses Fenster zu setzen?
|
|
Roboman 
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Mi 27.01.10 09:47
Sorry Leute,
PC hat sich in Schall und Rauch aufgelöst. Lüfter fest und dann ist es mächtig heiß geworden und bruzel bruzel PC kaputt. Sitze grad auf der Arbeit.
Muss erst einmal wieder alles erneuern. Kann leider was dauern..
Danke schon mal im voraus.
Gruß von der Front
|
|
Roboman 
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Di 23.03.10 15:02
Servus Leute,
hat was länger gedauert nach ner Tour (beruflich) durch Schweden und Norddeutschland.
Jo hab das ganze ausprobiert und hab festgestellt, das das ganze wunderbar funktioniert. Ist zwar umständlich aber wenn halt
nicht anders realisierbar dann ist es halt so. Ich dachte es wäre einfacher. Halt wie hier ein Label drüber und fertig.
Gut vielen herzlichen Dank an alles.
Ihr habt mir weiter geholfen.
|
|
ifkv
Hält's aus hier
Beiträge: 3
|
Verfasst: Fr 26.03.10 00:51
Hallo,
ich habe die Diskussion mit Interesse verfolgt.
Ich versuche auch Bilder von einer Webcam zu grabben.
Mein Problem:
Die USB-Kamera funktioniert mit der Software aus dem Projekt von Rene problemlos auf einem XP-Rechner mit SP2,
aber nicht mit XP und SP3 sowie Win7. Dann bleibt das Bildfenster einfach schwarz.
Wird die Kamera mitb einer anderen Software ( z.B. vlc-mediaplayer) geöffnet, erhalte ich sowohl mit SP2 als auch SP3 sowie Win 7 ein Bild.
Irgendwelche Hinweise??
|
|
Roboman 
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Fr 26.03.10 13:56
Sorry das du erst jetzt ne Meldung bekommst, war die Woche unterwegs.
Ähmmm, komisch, ich verwende Win7 zu Hause auch und das mit Delphi2007. Und das klappt ganz gut, das Projekt funktioniert jedenfalls
bei mir.
Deinstallier die Kamera nochmal. Dann abkoppeln und neu installieren. Dann erst wieder ankoppeln.
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Fr 26.03.10 14:13
Hallo,
ich verwende ebenfalls Win7 und Delphi2007. Das Projekt funktioniert bei mir nicht...
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Roboman 
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Fr 26.03.10 15:48
Das ist seltsam, da ich einfach Delphi2007 auf dem Laptop installiert habe. Es ist Win7 Home.
|
|
ifkv
Hält's aus hier
Beiträge: 3
|
Verfasst: Fr 26.03.10 15:48
Hallo Roboman,
ich verwende ein altes Delpi 7 Personal
Kannst Du deine Exe zum Testen zur Verfügung stellen?
Danke
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Sa 27.03.10 15:55
Roboman hat folgendes geschrieben : | Servus Leute,
also ich habe ein kleines Problem, und ja ich habe auch schon einmal gegoogelt.
Es dreht sich um folgendes. Ich lese das Livebild einer Kamra ein die auf nem Roboter von mit aufgebaut ist. |
In der Überschrift steht "Funkkamera" im Verlauf des Thread immer wieder USB-Webcam. Wenn es denn nun wirklich eine Funkkamera ist, welchen Empfänger hast Du den wie angeschlossen bzw. ausgelesen. Ich habe eine 2,3Ghz FunkKamera Kanal3 deren Empfänger ein Video - und Audosignal liefert. Wenn ich dieses Signal in meine TerraTec zum Grabben einspeise, kommt nur weißes Rauschen dabei raus. Also, falls wirklich Funkkamera bei Dir, wäre ich für einen Hinweis dankbar.
cu delphi10
_________________ Salus populi suprema lex esto
|
|
ifkv
Hält's aus hier
Beiträge: 3
|
Verfasst: So 28.03.10 11:46
Hi,
das Problem unter XP und SP3 scheint daran zu liegen, dass auf diesen Rechner noch ein alter Treiber für eine Terratec-USB-Kamera im System rumturnt
und die AVICAP32.DLL glaubt, auch ohne die angeschlossene Hardware darauf zugreifen zu können.
Gelöst habe ich das Problem mit einer anderen Delphi-Software, die mehrere Kameras gleichzeitig auslesen kann.
www.grizzlymotion.co...emo/vsampledemo.html
Dort werden in einer Liste alle vom System als verfügbar bezeichneten Kamears dargestellt.
|
|
Roboman 
      
Beiträge: 115
WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
|
Verfasst: Mo 11.04.11 09:00
Hallo zusammen,
eine dicke Entschuldigung wenn ich mich jetzt erst melde. War leider die letzten Wochen verhinder
und hatte keine Zeit zu Hause irgendwas zu machen außer zu pennen.
Also richtig es geht um eine Funkkamera von ELRO mit einem C910 Receiver der über einen AV-USB-Grabber
am Laptop angeschlossen ist. Der USB2.0 Capture ist von Conrad. Die mitgelieferte Software ULEAD Video
klappt und ich bekomme ein Bild rein. Also muss es auch irgendwie in Delphi möglich sein.
Problem ist nur dass die Kamera über Funk im 2,4GHz-Bereich arbeitet und somit mein WLAN stört. Deshalb
habe ich immer zum Testen eine USB-Webcam damit ich weiter im WLAN arbeiten kann. Es ist das gleiche.
Ich hab vor ein paar Jahren mit der Funkkamera mal nen Robi gesteuerte unter Delphi6 und WinXP und da hat
alles funktioniert nur jetzt unter Win7 bekomme ich mit Delphi2009 das nicht hin.
|
|