Thông báo

Collapse
No announcement yet.

OpenCV + MFC : Hiển thị hình ảnh trực tiếp lên dialog

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • OpenCV + MFC : Hiển thị hình ảnh trực tiếp lên dialog

    Có rất nhiều bạn đang học OpenCV kết hợp với MFC (Visual Studio - các ứng dụng kiểu Dialog based) nhưng đang lay hoay để hiển thị hình ảnh kiểu IplImage lên dialog. Bài viết này sẽ giúp các bạn giải quyết điều này:

    IplImage* m_image;

    .................
    Tạo sự kiện OnPaint() và thực hiện các lệnh sau:

    Code:
    void CKlinkImageToolKit::OnPaint()
    {
           CPaintDC dc(this);
           if(m_image)
           {
                   //Chuyển hình ảnh từ kiểu IplImage sang Bitmap của Window
                   BITMAPINFOHEADER* bmih = (BITMAPINFOHEADER*) new char[sizeof(BITMAPINFOHEADER)];  
    		bmih->biSize = sizeof(BITMAPINFOHEADER);
    		bmih->biWidth = (long)m_image->width;
    		bmih->biHeight =  (long)m_image->height;
    		bmih->biPlanes = 1;
    		bmih->biBitCount = 24;
    		bmih->biCompression = BI_RGB;
    		bmih->biClrUsed = 0;
    
    
    		IplImage* dibish = NULL;
    		dibish = cvCloneImage(m_image);
    
    		//Hiển thị hình ảnh lên window
    		::SetDIBitsToDevice(picDC->GetSafeHdc()/*dc.GetSafeHdc()*/, 0, 0, (DWORD)bmih->biWidth, (DWORD)bmih->biHeight, 
          0,0,0,(UINT)bmih->biHeight, dibish->imageData, (BITMAPINFO*)bmih, DIB_RGB_COLORS );
    		
    		cvReleaseImage(&dibish);						
    		delete bmih;
           }  
    }
    Chú ý: ảnh m_image được lấy từ camera, webcam, ảnh....Nếu bạn nào đã đọc bài của tôi về sử dụng Visual Studio + OpenCV + DirectShow thì sẽ dễ dàng đọc m_image từ camera. Nói chung là có nhiều cách để lấy m_image.

  • #2
    thanks a compvis.... đúng cái em mày mò hổm rày....!!!

    Comment


    • #3
      Các bạn có thể tham khảo bài viết ở đây: http://www.dientuvietnam.net/forums/...25/index9.html

      Comment


      • #4
        các bác cho e hỏi, e dùng đoạn code trên thì tại hàm
        ::SetDIBitsToDevice(picDC->GetSafeHdc()/*dc.GetSafeHdc()*/, 0, 0, (DWORD)bmih->biWidth, (DWORD)bmih->biHeight,
        0,0,0,(UINT)bmih->biHeight, dibish->imageData, (BITMAPINFO*)bmih, DIB_RGB_COLORS );

        e không hiểu picDC ở đây là gì, hàm mà bác compvis post lên có phải chuyển định dạng ảnh từ IplImage thành bmp rồi hiển thị lên Picture Control với biến là picDC không.
        Last edited by tungoanh; 27-10-2013, 12:40.

        Comment

        Về tác giả

        Collapse

        compvis Tìm hiểu thêm về compvis

        Bài viết mới nhất

        Collapse

        Đang tải...
        X