tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1736
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nukleo Nukleo ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    60
    Hi,

    ich suche einen Weg IplImages der OpenCV-Bildverarbeitungsbibliothek im Fenster einer MFC-Dialog-Applikation darzustellen. Ich arbeite mit VS 2005. Im Dialog befindet sich eine Picture-Control (IDC_IMG) und eine Groupbox (IDC_IMGSTAT). Mit folgendem Code in der OnInitDialog() Methode versuche ich in eines (hier Picture-Control) der beiden Elemente zu zeichen:

    Code :
    1
    2
    3
    4
    5
    6
    
    HWND hPic = NULL;
    GetDlgItem(IDC_IMG, &hPic);
    char* szWindName = (char*)cvGetWindowName(hPic);
     
    IplImage *exclude = cvLoadImage("exclude2.bmp",0);
    cvvShowImage(szWindName,exclude);

    in allen Fällen wird fehlerfrei compiliert, nur zu sehen ist nichts
    Hoffe ihr habt einen Rat.

    Gruß Emu
     

  2. #2
    Nukleo Nukleo ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    60
    Ok,... dann werde ich mir mal antworten

    folgende Funktion in der dlg Klasse gibt Abhilfe:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    void CWinRapDlg::ShowInComp(int IDC_IMG,IplImage* TheImage)
    {
        CvvImage shw;
        if (TheImage->nChannels == 3 ) shw.CopyOf(TheImage);
        else shw.CopyOf(TheImage,1);
        CDC *pDC = GetDlgItem(IDC_IMG)->GetDC();
        CRect rect;
        GetDlgItem(IDC_IMG)->GetClientRect(&rect);
        shw.DrawToHDC( pDC->m_hDC, &rect);      
        ReleaseDC(pDC);
    }

    Übergeben wird die IDC des Steuerelements, indem das Bild dargestellt werden soll und das gewünschte IplImage. Ich verwende als Control jetzt immer Picturecontrols. Diese Funktion muss immer dann aufgerufen werden, wenn das Bild neu gezeichnet werden muss (Fenster wird verschoben; nächstes Bild etc.).

    Bis bald
    Emu
    Geändert von Nukleo (05.08.08 um 10:54 Uhr)
     

  3. #3
    Wormsphil Tutorials.de Gastzugang
    Hoffe du verfolgst das Forum noch!
    Habe deinen Codeschnippsel soeben verwedet, aber bei mir lassen sich die Controls des MFC-Dialogs nicht mehr bedienen sobald ich die Bilder in die Picture controls geladen habe.
    Hattest du ähnliche Probleme?
    MfG Flashmaster
     

  4. #4
    IIXII IIXII ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    1
    hey.
    du musst threads verwenden, da sonst das passiert was du beschreibst.
    hier eine anleitung:


    CWinThread* m_pThread; //in der Klasse MyClass
    ===================================================
    Die Haupt-Thread-Funktion:
    ___________________________________________________
    // static UINT thrfunc(LPVOID); Brauch im Dialog nicht statisch zu sein

    UINT MyClass::thrfunc(LPVOID pParam)
    {
    MyClass* p_my_class = (MyClass*) pParam;

    p_my_class->MyFunc(); //MyFunc, die sich in der Klasse befindet

    return 0;
    }
    ___________________________________________________
    Die Start-Thread-Funktion:
    Kann genauso gelassen werden.
    ___________________________________________________

    void CdfgdfgerDlg::Thread_Starten(void)
    {
    m_pThread = AfxBeginThread(thrfunc, this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
    m_pThread->m_bAutoDelete = FALSE;
    m_pThread->ResumeThread();
    }
    ___________________________________________________
    Die End-Thread-Funktion:
    Kann genauso gelassen werden.
    ___________________________________________________
    void CdfgdfgerDlg::Thread_Stoppen(void)
    {
    if(m_pThread)
    {
    m_pThread->SuspendThread();
    delete m_pThread;
    m_pThread = NULL;
    }
    }
    ___________________________________________________
    Wenn Thread aktiv, kann Info. über den "aktiv Befehl" "vom Hintergrund" geholt werden.
    Am besten im Thread-Hauptfunktion den Befehl Thread-stopp() erteilen.
     

Ähnliche Themen

  1. OpenCv: Graustufe nach RGB
    Von Jey im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 12.10.11, 08:37
  2. OpenCV Speicherüberlauf
    Von bertonex19 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 18.11.10, 11:36
  3. Objekt bzw. Farberkennung mit OpenCV
    Von Blubbdiblubb im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 24.01.10, 12:32
  4. OpenCV - Linien erkennen
    Von oizo2unreal im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 16.05.08, 12:16
  5. NCCF mit OpenCv
    Von kalua25 im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 29.03.06, 12:12