- 3D-Druck Einstieg und Tipps         
Seite 8 von 11 ErsteErste ... 678910 ... LetzteLetzte
Ergebnis 71 bis 80 von 108

Thema: Bilder einer Webcam / DV-Cam analysieren

  1. #71
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2003
    Beiträge
    459
    Anzeige

    E-Bike
    Jo, das mit den Puzzle-Teilen finde ich auch interessant, würde auch mal gerne mehr darüber erfahren. Auf jeden Fall wünsche ich euch viel Erfolg bei Jufo, ich war in diesem Jahr dabei

    Das Zusammensetzen der Teile könnte man ja auch ohne Hardware-Interface machen und nur die Bildausschnitte drehen und zusammensetzen.

    Gruß
    Johannes
    relaunched: http://www.mindrobots.de algorithms for intelligent robots

  2. #72
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    ich kann schon ein wenig dazu sagen, das wird zwar nicht soweit gehen, dass ich Code poste, aber einen Überblick kann ich auf jeden Fall geben

    als Erstes mal vorweg, wir haben keine fertigen Algorithmen oder Verfahren verwendet, sondern alles selbst überlegt

    das hat mehrere Gründe, zum Einen kannten wir uns bei Beginn des Projekts überhaupt nicht mit bestehenden Verfahren aus und zum Anderen haben unsere Verfahren für unsere Anwendung auch kleine Vorteile gegenüber den bestehenden (allerdings nur für dieses Projekt, bei anderen hätten sie keine Chance, sie sind halt speziell für diesen Fall)

    nun zu einem Überblick über die Funktionen...
    als Erstes(nachdem ein Bild der Puzzleteile angefertigt wurde) wird zwischen Hintergrund und Puzzleteilen unterschieden(wie das genau funktioniert kann ich gern mal erklären, nur würde das länger dauern)

    dann werden die Kantenpixel der Puzzleteile ermittelt, die Puzzleteile sind aufgrund des letzten Schrittes schwarz und der Hintergrund weiß, deshalb wird hier nach Pixeln gesucht, bei denen sich die Farbe ändert

    im nächsten Schritt werden die Pixel zu Puzzleteilen zusammengefasst und die meisten fehlerhaften Randpixel verworfen
    nun werden die Ecken der Puzzleteile ermittelt und für jede Kante charakteristische Eigenschaften, anhand derer die Kanten miteinander verglichen werden können
    zum Schluss werden die Puzzleteile virtuell zusammengesetzt (bei diesem Schritt sind wir im Moment auch) und die nötigen Werte berechnet, die dann an den Roboter geschickt werden, der dann das Puzzle zusammenbaut (wenn alles funktioniert... )

    diesen Roboter haben wir allerdings größtenteils nicht selbst gebaut, sondern von ein Firma ausgeliehen, das war auch nötig, denn wir haben uns vorher eingehend mit diesem Thema auseinander gesetzt, Motorsteuerung usw. war testweise schon gebaut, allerdings haben wir dann eingesehen, dass mit unserem Wissen und vorallem Budget kein Roboter gebaut werden kann, der Puzzleteile auf weniger als einen Millimeter genau legen kann
    wir sind dann durch viel Glück auf diese Firma gestoßen, die uns einen Roboterarm mit xyz-Bewegung ausgeliehen haben, an den wir nur noch die Kamera und eine Halte- und Drehvorrichtung für die Puzzleteile bauen müssen

    man muss aber auch noch dazu sagen, dass wir uns nur in Mathe/Info angemeldet haben bei Jufo, wir behaupten also nicht, wir hätten das komplett selbst genaut

  3. #73
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Respeckt das ihr so weit seid. wenn das projekt veröffendlich hätte ich gerne den link auch wenn ihr nicht alles selbst gebaut habt.

    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

  4. #74
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    10
    @numberfive

    du hast ganz am anfang des thread geschrieben:
    "nur das ich das bild direckt im direcktX treiber abhole und so mit in der stream paralle anzeigen kann fast kein zeit verlust duch den stream"2

    kannst du mir dazu nen tip geben? wie holt man das bild direkt im treiber ab? wie sieht das dann im graphen aus? ich schaffs bisher nur ne videosource mit nem render treiber zu verbinden und das in der picturebox darzustellen, würde es aber auch gerne direkt machen da ich 4 kameras ansteuern will

  5. #75
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    hallo gunfire,

    es gibt doch die moglich kein einige Grapper an DirectX zu übergeben.
    das ist ein ComObjekt. Vorsicht dieses Comobjeckt läuft dann im treiber kontext. Also gilt nicht das sdk sonder das ddk.

    hier ist ist der code derdas bild klaut:
    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);
    
    			// 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;
    guck dir doch mal den link bei projekt an vielleicht können wir was zu sammen machen

    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

  6. #76
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    10
    danke für deine antwort,
    leider kann ich damit noch gar nichts anfangen das zu integrieren, muss wohl erstmal mehr grundlagen zu com lernen...
    oder hast du zufällig ein kleines fertiges projekt oder sowas wo das integriert ist, dass man das mal anschauen kann, aus beispielen lernt man am besten.

  7. #77
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    ehrlich gesagt wie bist du dann so weit gekommen ?
    DirectX ist doch alles Com ?

    mit was programierst du ?

    Code:
    // NOTE that we try to render the interleaved pin before the video pin, because
        // if BOTH exist, it's a DV filter and the only way to get the audio is to use
        // the interleaved pin.  Using the Video pin on a DV filter is only useful if
        // you don't want the audio.
    
        // 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
    
        if( fMPEG2 )
        {
    Das ist der Code der den Grapper lädt der nachher die Bilder Klaut.

    Hast du das SDK von Microsoft da sind Beispiele drin
    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. #78
    Gast
    oh alles klar, ich dachte weil es im treiber kontext läuft ist da irgendwas anders, aber so ists klar denk ich,
    ich hab halt erst vor 2 wochen mit windows angefangen, bin eigentlich unter linux zuhause... aber da ist halt sowas doof zu machen

  9. #79
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    das problem ist nur das diese funktion vom treiber auf gerufen wird.

    das meine ich damit damit gilt in der Funktion nicht di programm ubgebung sondern die treiber umgebung.

    in halb vom kernel oder drüber.

    jetzt klar ?
    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

  10. #80
    Neuer Benutzer Öfters hier
    Registriert seit
    16.01.2005
    Beiträge
    10
    ich denk schon ja, muss morgen mal genauer anschauen, thx auf jedenfall mal

Seite 8 von 11 ErsteErste ... 678910 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test