- Akku Tests und Balkonkraftwerk Speicher         
Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte
Ergebnis 31 bis 40 von 55

Thema: ASURO mit Kamera ferngesteuert

  1. #31
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.01.2004
    Alter
    35
    Beiträge
    645
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Jep... allerdings hab ich die Bilder bis jetzt immer noch "von Hand" geladen. Arbeite gerade daran das Bild direkt von der Cam zu laden. Ich hab schon mal was mit Video Capture gemacht, wird also nicht mehr lange dauern... morgen vieleicht.
    MfG Xtreme
    RP6 Test - alles zum Nachfolger des bekannten RP5 im neuen RP6 Forum!

  2. #32
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    Hallo Zusammen,
    im Moment versuche ich gerade, einen Algorithmus für die Suche nach zwei Objekten in einem Bild zu realisieren.
    Es klappt schon, nur ist der Algorithmus noch ein wenig langsam. Die Tiefpassfilterung braucht etwas zuviel Zeit.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken zweiobjektsuche2.jpeg  

  3. #33
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    Hier eine Beschreibung des Algorithmus zu den obigen Bildern ( gestern war's schon etwas zu spät ):

    Bild1: Orginalbild
    Bild2: Rote Farben mittels des Algoritnus wie weiter oben im Thread beschrieben extrahiert und in eine Pixelbild umgewandelt
    Bild3: tiefpassgefiltertes Pixelbild, durch die Tiefpassfilterung werden aus den ebenen weißen Fläche kleine Berge
    Bild4: Höchste Bergspitze gesucht und Berg mittels Überzeichnen aus dem Bild entfernt danach suchen der zweiten Bergspitze
    Bild5: Position der beiden gefundenen Bergspitzen

    Mich würde mal interessieren, was ihr von dem Algorithmus haltet. Er funktioniert, aber vielleicht hat ja noch jemand eine andere Idee ?

    Gruss,
    stochri

  4. #34
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    Hallo, ich speichere die VideoCapturebilder der Cam über die Ablage in ein Picturefenster zum auswerten.
    Ich Progge in Purebasic.
    Ich Teste es zur Zeit über einen Button. Links ist das Videocapturebild (25 B/sec) und rechts wird nach dem Buttondrücken ein Picturebild dargestellt zum auswerten.
    Eine andere schnellere Lösung als über die Ablage habe ich nicht gefunden.

    Code:
    ; PureBasic Visual Designer v3.92 build 1460
    
    IncludeFile "inc.pb"
    
    #WM_CAP_START = #WM_USER
    #WM_CAP_SET_CALLBACK_ERROR = #WM_CAP_START + 2
    #WM_CAP_SET_CALLBACK_STATUS = #WM_CAP_START + 3
    #WM_CAP_SET_CALLBACK_YIELD = #WM_CAP_START + 4
    #WM_CAP_SET_CALLBACK_FRAME = #WM_CAP_START + 5
    #WM_CAP_SET_CALLBACK_VIDEOSTREAM = #WM_CAP_START + 6
    #WM_CAP_SET_CALLBACK_WAVESTREAM = #WM_CAP_START + 7
    #WM_CAP_DRIVER_CONNECT = #WM_CAP_START + 10
    #WM_CAP_DRIVER_DISCONNECT = #WM_CAP_START + 11
    #WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14
    #WM_CAP_DLG_VIDEOFORMAT = #WM_CAP_START + 41
    #WM_CAP_DLG_VIDEOSOURCE = #WM_CAP_START + 42
    #WM_CAP_DLG_VIDEODISPLAY = #WM_CAP_START + 43
    #WM_CAP_SET_PREVIEW = #WM_CAP_START + 50
    #WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52
    #WM_CAP_GET_STATUS = #WM_CAP_START + 54
    #WM_CAP_FILE_SAVEDIB = #WM_CAP_START + 25
    #WM_CAP_SET_SCALE = #WM_CAP_START + 53
    #WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85
    #WM_CAP_EDIT_COPY = #WM_CAP_START + 30
    #WM_CAP_GRAB_FRAME = #WM_CAP_START+60
    
    Open_Window_0()
    OpenLibrary(0, "AVICAP32.DLL")
    
    hRobby = CallFunction(0, "capCreateCaptureWindowA", "Test", #WS_VISIBLE + #WS_CHILD, 120, 30, 300, 300, hWnd, 0)
    SendMessage_(hRobby, #WM_CAP_DRIVER_CONNECT, 0 , 0) 
    SendMessage_(hRobby, #WM_CAP_SET_SCALE , 1 , 0)
    SendMessage_(hRobby, #WM_CAP_SET_PREVIEWRATE, 50, 0)
    SendMessage_(hRobby, #WM_CAP_SET_PREVIEW, 1 , 0)
    
    Repeat ; Start of the event loop
      
      Event = WaitWindowEvent() ; This line waits until an event is received from Windows
      
      WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
      
      GadgetID = EventGadgetID() ; Is it a gadget event?
      
      EventType = EventType() ; The event type
      
      ;You can place code here, and use the result as parameters for the procedures
      
      If Event = #PB_EventGadget
        
        If GadgetID = #Button_0
          If Link <> 0 
            StartDrawing( WindowOutput() )
            DrawImage(Link, 440,30,300, 300) 
            StopDrawing()
          EndIf
        EndIf
        
      EndIf
      
      SendMessage_(hRobby, #WM_CAP_GRAB_FRAME, 0 , 0)
      SendMessage_(hRobby, #WM_CAP_EDIT_COPY, 0 , 0)
      Link = GetClipboardData(#PB_ClipboardImage)
      
      Delay(1)
      
    Until Event = #PB_Event_CloseWindow ; End of the event loop
    
    SendMessage_(hRobby, #WM_CAP_SET_PREVIEW, 0, 0)
    SendMessage_(hRobby, #WM_CAP_DRIVER_DISCONNECT, "Test", 0)
    CloseWindow(0)
    CloseLibrary(0)
    
    End
    ;
    Castle

  5. #35
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.01.2004
    Alter
    35
    Beiträge
    645
    In Delphi gibt es sowas wie Copyrect... so machs ich jedenfalls!
    Werde heute Abend mal das Progrmm hochladen...
    MfG Xtreme
    RP6 Test - alles zum Nachfolger des bekannten RP5 im neuen RP6 Forum!

  6. #36
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.01.2004
    Alter
    35
    Beiträge
    645
    So, in meiner Galerie befindet sich jetzt ein Screenshot des Programms.
    Bearbeitungszeit auf meinem 1,5 GhZ Rechner: ca. 450 ms

    Auf meiner 3500 er Kiste läuft die Webcam komischerweiße net... muss ich mir mal genauer anschaun...
    MfG Xtreme
    RP6 Test - alles zum Nachfolger des bekannten RP5 im neuen RP6 Forum!

  7. #37
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.10.2005
    Alter
    71
    Beiträge
    157
    Hallo,

    ich hab' mir jetzt eine WebCam zugelegt. Zur Zeit versuche ich mich darin, die Bilder mit einem VB-Programm einzulesen. Als Vorlage habe ich leider nur ein Programm in C++, das aber ekelhaft viele API-Funktionen über DirectX aufruft. Hat jemand eine Idee, wie es einfacher geht?

    Hier der VB-Code (Auszüge) zur ermittlung der Schwerpunkt-Koordinaten:
    Code:
    ....
    
    bmpOrig ist eine Bitmap und enhält das Bild.
    
    Dim mXRed As Integer, cXRed As Integer
    Dim mYRed As Double, cYRed As Integer
    Dim mXGreen As Integer, cXGreen As Integer
    Dim mYGreen As Double, cYGreen As Integer
    
    Dim x, y As Integer
    Dim c As Color
    Dim Hue As Integer
    Dim Saturation As Integer
    Dim Brightness As Integer
    
    For y = 0 To bmpOrig.Height - 1
        For x = 0 To bmpOrig.Width - 1
             c = bmpOrig.GetPixel(x, y)
             Hue = CInt(c.GetHue())
             Saturation = CInt(c.GetSaturation() * 100)
             Brightness = CInt(c.GetBrightness() * 100)
             If (Hue > 355 Or Hue < 5) And (Saturation > 70) And Brightness > 35 Then
                'roter Punkt, Farbwert (Hue) zwischen 355 .. 360 / 0 .. 5
                mXRed += x 'Summe der x-Koordinaten mit roten Pixel
                mYRed += y
                cXRed += 1  'Anzahl der x-Koordinaten mit rotem Pixel
                cYRed += 1
             ElseIf (Hue > 105 Or Hue < 120) And (Saturation > 70) And Brightness > 35 Then
                'grüner Punkt, Hue zwischen 105 .. 120
                mXGreen += x
                mYGreen += y
                cXGreen += 1
                cYGreen += 1
             Else
                'irgendeine  andere Farbe
             End If
         Next
    Next
    mXRed = CInt(mXRed / cXRed) 'Mittelwert der x-Koordinaten mit rotem Pixel = x-Koordinate des Schwerpunkts
    mYRed = CInt(mYRed / cYRed)
    mXGreen = CInt(mXGreen / cXGreen)
    mYGreen = CInt(mYGreen / cYGreen)
    @storchi: Ich habe die ersten Experimente mit SCILAB gemacht. Damit kann man sicher gut Versuche anstellen. Vielen Dank noch einmal für den Hinweis auf das Tutorial.

    Gruß Red Baron

  8. #38
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    xtreme, warum machst du das videocapturebild von der cam nicht ins gleiche fenster, sieht doch besser aus, als wenn es daneben hängt. es gibt dafür schöne videobefehle in der avicap32.dll :
    #WM_CAP_START = #WM_USER
    #WM_CAP_SET_CALLBACK_ERROR = #WM_CAP_START + 2
    #WM_CAP_SET_CALLBACK_STATUS = #WM_CAP_START + 3
    #WM_CAP_SET_CALLBACK_YIELD = #WM_CAP_START + 4
    #WM_CAP_SET_CALLBACK_FRAME = #WM_CAP_START + 5
    #WM_CAP_SET_CALLBACK_VIDEOSTREAM = #WM_CAP_START + 6
    #WM_CAP_SET_CALLBACK_WAVESTREAM = #WM_CAP_START + 7
    #WM_CAP_DRIVER_CONNECT = #WM_CAP_START + 10
    #WM_CAP_DRIVER_DISCONNECT = #WM_CAP_START + 11
    #WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14
    #WM_CAP_DLG_VIDEOFORMAT = #WM_CAP_START + 41
    #WM_CAP_DLG_VIDEOSOURCE = #WM_CAP_START + 42
    #WM_CAP_DLG_VIDEODISPLAY = #WM_CAP_START + 43
    #WM_CAP_SET_PREVIEW = #WM_CAP_START + 50
    #WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52
    #WM_CAP_GET_STATUS = #WM_CAP_START + 54
    #WM_CAP_FILE_SAVEDIB = #WM_CAP_START + 25
    #WM_CAP_SET_SCALE = #WM_CAP_START + 53
    #WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85
    #WM_CAP_EDIT_COPY = #WM_CAP_START + 30
    #WM_CAP_GRAB_FRAME = #WM_CAP_START+60

    Castle

  9. #39
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.01.2004
    Alter
    35
    Beiträge
    645
    Ja, dir kenn ich... verwende die auch für das Cam Fenster...
    Keine Ahnung warum ich das so gemacht hab
    MfG Xtreme
    RP6 Test - alles zum Nachfolger des bekannten RP5 im neuen RP6 Forum!

  10. #40
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    Hallo RedBaron,
    Schön, dass Du SCILAB ausprobiert hast. Es ist schon ganz gut, um mal schnell Experimente zu machen. Mittlerweile bin ich noch auf eine andere Toolbox gestossen: SIVP für Scilab. Leider hab ich die bis jetzt noch nicht zum Laufen gekriegt. Die benutzt die Open-Soruce Bildverarbeitungsroutinen OpenCV von Intel. Kennst Du diese Bibliothek ? Eine riesige Sammlung von Funktionen in C. Wenn Du also gerne weiter in C-Programmieren möchtest: dort findest Du alles, was für die Bildverarbeitung nötig ist. Allerdings kommt man natürlich vom hundersten ins tausendste. Eigentlich wollte ich nur eine Routine für eine schnelles vergrößern und Verkleinern des Bildes. Aber jetzt bin ich an der OpenCV hängen geblieben. Die Routinen sind natürlich optimiert für Intel-Prozessoren, aber auf meinem AMD lassen die sich auch kompliieren. Ich nehme mal an, dass sie dort halt langsamer laufen.

    Wenn Du also genügend Zeit hast: .... OpenCV !

    Gruss,
    stochri

Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen