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

        • Andrea14
          Vấn đề về tốc độ quay
          bởi Andrea14
          Chào mọi người,

          Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
          Hôm qua, 12:42
        • bqviet
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi bqviet
          Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
          06-12-2025, 17:17
        • nguyendinhvan
          Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
          bởi nguyendinhvan
          Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
          05-12-2025, 19:59
        • afrendly
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi afrendly
          Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
          04-12-2025, 01:27
        Đang tải...
        X