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:
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.
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; } }
Comment