- 3D-Druck Einstieg und Tipps         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: Bilder aus einer Webcam "auslesen"

  1. #11
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Tut mir leid, da hab ich im Moment nix. Was sagt denn der Google dazu ?
    mfg robert

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Hallo ich habe das mit dem sample grapper fertig. in c++ MS 6.0

    ist der Thread noch aktuell ?
    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

  3. #13
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Na sicher doch. Nachdem im Forum vornehmlich von Sachen berichtet wird, dir NICHT funktionieren, wär's schon, wenn du uns mal an einem Erfolg teilhaben läßt. mfg robert

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    10
    ja er ist noch aktuell,
    ich blick da noch nicht ganz durch, ich hab jetzt den samplegrabber soweit dass er mir bmp's auf die platte schreibt. ich will jedoch dass ich gleichzeitig auch den livestream anschauen kann, also:
    ich will z.B. 1mal pro sekunde ein Bitmap aber live alles sehen.
    ich hab das mal mit dem SmartTree versucht, der ja angeblich den stream teilen kann, leider zeigt er immer nur den gegrabbten teil an.
    ja, wie PicNick sagt: "wär's schön, wenn du uns mal an einem Erfolg teilhaben läßt"

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Ok leider habe ich den source nicht dabei.
    so das ihn jetzt nicht hochladen kann.

    also bei mir läuft prv und bilder klauen und auf die platte allso gleich zeitig.
    aber vorsicht dann tut die kiste nix anders mehr (AMD 1000) scsi

    einteil des source habe ich schon hier veröffentlicht.

    https://www.roboternetz.de/phpBB2/ze...rag.php?t=2486

    seite vier aber das hat gunfire ja schon

    eines mene ich mich noch dunkel zu erinnern. das schreiben und bilder klauen gleichzeitig ist abhänig vom treiber der karte.

    gunfire schreibst du das bilder im grapper ?
    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

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    10
    ja im grabber, aber eigentlich will ich gar nicht schreiben sonder nur analysieren, das schreiben war nur mal so zum testen.
    hm wenn du schon mit 1 cam probleme bekommst bin ich mal gespannt wieviel ressourcen dann 4 brauchen, aber das soll nicht das prob. sein.
    mir ist nur das mit dem preview nicht klar, wär cool wenn du mal was hochladen könntest.

  7. #17
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    ja du bekommst noch was so bald ich wieder zugriff habe.

    das mit dem grapper vergiss es das tut jetzt noch aber die vorschau
    wird nur noch ruckeln.ausser dem gibt das drop frames.

    Hast du schon mal mit threads programmier ?

    du muß die mit new einfach ein array of byte im speicher an legen

    und den pointer dann per nachricht an den anderen Thread schicken.
    in dem kannst du dann alles mit den daten machen was du willst.
    so mache ich das auch.

    Alles klar ?

    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

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Hallo,

    hier sind source auszüge.
    Aber nicht kommerziell nutzen
    Code:
    STDMETHODIMP BufferCB( double SampleTime, BYTE * pBuffer, long BufferSize )
        {
            
    		if(g_bWantBimap)
    		{
     
    			CBitmapData* pBitmapData = new CBitmapData;
    			if (!pBuffer)
    				return E_POINTER;
    
    			if( pBitmapData->lBufferSize < BufferSize)
    			{
    				if (pBitmapData->pBuffer)
    				{
    					delete [] pBitmapData->pBuffer;
    				}
    				pBitmapData->pBuffer = NULL;
    				pBitmapData->lBufferSize = 0;
    			}
    
    			// Since we can't access Windows API functions in this callback, just
    			// copy the bitmap data to a global structure for later reference.
    			pBitmapData->dblSampleTime = SampleTime;
    
    			// If we haven't yet allocated the data buffer, do it now.
    			// Just allocate what we need to store the new bitmap.
    			if (!pBitmapData->pBuffer)
    			{
    				pBitmapData->pBuffer = new BYTE[BufferSize];
    				pBitmapData->lBufferSize = BufferSize;
    			}
    
    			if( !pBitmapData->pBuffer )
    			{
    				pBitmapData->lBufferSize = 0;
    				return E_OUTOFMEMORY;
    			}
    
    			// Copy the bitmap data into our global buffer
    			memcpy(pBitmapData->pBuffer, pBuffer, BufferSize);
    
    			pBitmapData->Height = Height;
    			pBitmapData->Width = Width;
    
    			// Post a message to our application, telling it to come back
    			// and write the saved data to a bitmap file on the user's disk.
    			PostThreadMessage(m_pRoboControlThreadId, WM_CAPTURE_BITMAP, NULL, (long)pBitmapData);
    
    			g_bWantBimap = FALSE;
    			
    		}
    		return S_OK;
        }
    
    das ist die routine wo das bild verschickt wird
    
    class CBitmapData  
    {
    public:
    	CBitmapData();
    	virtual ~CBitmapData();
    	
    	double dblSampleTime;
        long lBufferSize;
        BYTE *pBuffer;
        BITMAPINFOHEADER bih;
    	long Width;
    	long Height;
    };
    
    hier ist das bimapt drin
    
        m_pGrabber->SetOneShot(FALSE);
        m_pGrabber->SetBufferSamples(TRUE);
    	m_pGrabber->SetCallback(&g_CB, 1); // 0 = Use the SampleCB callback method.
    
    hier wird der grapper über geben und der Mode bestimmt
    
    	// Jetzt den Framegrapper auf bauen
    
    	if (!m_pGrabber)
    	{
    		hr = m_pGrabber.CoCreateInstance( CLSID_SampleGrabber );
    	}
    
    	CComQIPtr< IBaseFilter, &IID_IBaseFilter > pGrabBase( m_pGrabber );
    	
        CMediaType VideoType;
        VideoType.SetType( &MEDIATYPE_Video );
        VideoType.SetSubtype( &MEDIASUBTYPE_RGB24 );
        hr = m_pGrabber->SetMediaType( &VideoType ); // shouldn't fail
    
    	hr = pFg->AddFilter( pGrabBase, L"Grabber" );
    
    	// ende
    das baut den grapper zu sammen
    ich hoffe es hilft dir

    wenn du mein test prg haben willst da sag bescheit
    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

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    10
    cool danke, soweit hab ichs im prinzip auch,
    kannst du mir das testprog mal schicken? das mit dem preview ist da ja so auch net drin...
    wär echt super. danke schonmal...

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Hier das test Prg,

    Code:
    if( fMPEG2 )
        {
            hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW,
                                             &MEDIATYPE_Stream, pVCap, pGrabBase, NULL);
            if( FAILED( hr ) )
            {
                ErrMsg(TEXT("Cannot build MPEG2 preview graph!"));
            }
    
        }
        else
        {
            hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW,
                                             &MEDIATYPE_Interleaved, pVCap, pGrabBase, NULL);
            if(hr == VFW_S_NOPREVIEWPIN)
            {
                // preview was faked up for us using the (only) capture pin
                fPreviewFaked = TRUE;
            }
            else if(hr != S_OK)
            {
                // maybe it's DV?
                hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW,
                                                 &MEDIATYPE_Video, pVCap, pGrabBase, NULL);
                if(hr == VFW_S_NOPREVIEWPIN)
                {
                    // preview was faked up for us using the (only) capture pin
                    fPreviewFaked = TRUE;
                }
                else if(hr != S_OK)
                {
                    ErrMsg(TEXT("This graph cannot preview!"));
                    fPreviewGraphBuilt = FALSE;
                    return FALSE;
                }
            }
    
            //
            // Render the closed captioning pin? It could be a CC or a VBI category pin,
            // depending on the capture driver
            //
    
            if(fCapCC)
            {
                hr = pBuilder->RenderStream(&PIN_CATEGORY_CC, NULL,
                                                 pVCap, NULL, NULL);
                if(hr != NOERROR)
                {
                    hr = pBuilder->RenderStream(&PIN_CATEGORY_VBI, NULL,
                                                     pVCap, NULL, NULL);
                    if(hr != NOERROR)
                    {
                        ErrMsg(TEXT("Cannot render closed captioning"));
                    }
                }
            }
        }
    MS:

    // build the preview graph!
    //
    // !!! PLEASE NOTE !!! Some new WDM devices have totally separate capture
    // and preview settings. An application that wishes to preview and then
    // capture may have to set the preview pin format using IAMStreamConfig on the
    // preview pin, and then again on the capture pin to capture with that format.
    // In this sample app, there is a separate page to set the settings on the
    // capture pin and one for the preview pin. To avoid the user
    // having to enter the same settings in 2 dialog boxes, an app can have its own
    // UI for choosing a format (the possible formats can be enumerated using
    // IAMStreamConfig) and then the app can programmatically call IAMStreamConfig
    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

Seite 2 von 3 ErsteErste 123 LetzteLetzte

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
  •  

LiFePO4 Speicher Test