- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 2 von 2

Thema: webcam bildauswertung mit c++

  1. #1
    Nikolai
    Gast

    webcam bildauswertung mit c++

    Anzeige

    Praxistest und DIY Projekte
    hi.
    ich schreibe gerade für mein notebook das steuerprogramm.
    mein problem ist nur, das ich das bild von der webcam zwar auf nem fenster darstellen kann, ich aber net weiß wie ich das bild auswerten kann.
    als schnittstelle benutzen ich die winapi und die capture-funktionen.
    Code:
    #include <windows.h>
    #include <vfw.h>
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    LRESULT CALLBACK FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr);
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         char          szAppName[] = "Name" ;
         HWND        hwnd ;
         MSG         msg ;
         WNDCLASS  wndclass ;
    
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
         wndclass.lpszMenuName  = NULL ;
         wndclass.lpszClassName = szAppName ;
    
         RegisterClass (&wndclass) ;
    
         hwnd = CreateWindow (szAppName, "Fenstername",  WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION,
                              0, 0, 500, 500,
                              NULL, NULL, hInstance, NULL) ;
    
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ;
    
         while (GetMessage (&msg, NULL, 0, 0))
              {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
              }
         return msg.wParam ;
    }
    
    
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
    {
    	static HINSTANCE hInstance;
    	static HWND hwndVideo;
    
         switch (iMsg)
              {
              case WM_CREATE :
    			   hInstance = ((LPCREATESTRUCT) lParam) -> hInstance;
    			   hwndVideo = capCreateCaptureWindow((LPSTR)"WebCam",
    				   WS_CHILD| WS_VISIBLE | WS_MAXIMIZE,
    				   0, 0, CW_USEDEFAULT, CW_USEDEFAULT,(HWND) hwnd, (int) 3);
    			   if(!capDriverConnect(hwndVideo,0))
    			   {
    				   MessageBox(hwnd,"Treiber konnte nicht geladen werden!","Treiberfehler",MB_ICONERROR);
    				   SendMessage(hwnd,WM_DESTROY,0,0);
    				   return 0;
    			   }
    			   capPreviewRate(hwndVideo,20);
    			   capPreview(hwndVideo,TRUE);
    			   capSetCallbackOnFrame(hwndVideo,FrameCallbackProc);
                   return 0 ;
    
    		  /*case WM_PAINT:
    
    			   return 0;*/
    
              case WM_DESTROY:
    			   capPreview(hwndVideo,FALSE);
    			   capDriverDisconnect(hwndVideo);
                   PostQuitMessage (0) ;
                   return 0 ;
              }
    
         return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
    }
    
    
    LRESULT CALLBACK FrameCallbackProc(HWND hwnd, LPVIDEOHDR lpVHdr)
    {
    	/*hier müsste ich jetzt das bild auswerten. die bilddaten sind zwar in lpVHdr aber ich weis net wie ich da rankomme*/
    	return TRUE;
    }
    würde mich freuen wenn mir einer helfen kann

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Nokolai nicht so kompliziert denken.

    leider habe ich den source gerade nicht greif bar deshalb aus dem kopf.
    es gibt ein nachricht die du dem video treiber schicken kannst dann legt er das bitmap in der zwischen ablage ab dann kannst du es da holen un auswertet. ist die einfachst lösung. oder du machst es wie ist in der callback funktion des direcktx treiber aber das ist heftig zu programmieren.

    http://msdn.microsoft.com/library/de...eo_capture.asp

    http://msdn.microsoft.com/library/de..._edit_copy.asp

    ich hoffe es hilf. im forum gibt es zwei quell code sample vb und delphi
    aller dings weiß ich nicht mehr wo.

    Gruß
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

Labornetzteil AliExpress