MFC控件显示图像的步骤

最简单的实现步骤哦

 /***************************************************
  *
  *把图片显示在Static控件中(PICTRUE控件也是一样,就是空间的ID不同而已)
  *
  **************************************************/
 //加载图片
 IplImage* img = cvLoadImage("ba.jpg");
 //把图片转换格式(由CImage类自己完成)
 m_Image.CopyOf(img);
 //获得控件dc
 HDC dc = GetDlgItem(IDC_STATIC_PICTURE)->GetDC()->m_hDC;
 //得到控件的大小
 CRect r;
 GetDlgItem(IDC_STATIC_PICTURE)->GetClientRect(r);
 //显示图片
 m_Image.DrawToHDC(dc,r);

 //其中CImage类的成员函数CopyOf和DrawToHDC起了关键性的作用
 //CopyOf的作用相当于转换格式(我也不是十分明白,没见过专业讲解 )
 //DrawToHDC是把图片显示在指定的区域,第一个参数是要显示的窗口等
 //的dc句柄,第二个参数是要显示区域的大小
 //Opencv相关的头文件和链接库在stdAfx.h中
 // 相信你看完这简单的几行代码后,自己就完全能够把任何Opencv下的图片
 //在mfc中显示了(包括视频和摄像机)恭喜你又有了一点收获

 

拓展1

摄像头在控件中显示,只需将上文中家在图像换成如下代码:

 //获取摄像头   
CvCapture* pCapture = cvCreateCameraCapture(-1);

//从摄像头获取帧

cvGrabFrame(pCapture);  

//取回获取的帧
IplImage *frame2=cvRetrieveFrame(pCapture); 

拓展2

打开多种类型的文件

 //文件对话框对象窗口
 CFileDialog dlg(TRUE,_T("*.bmp")," ",OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,"image file(*.bmp;*.jpg)|*.bmp;*.jpg|All Files(*.*)|*.*||",NULL);

 if(dlg.DoModal() == IDOK)
 {
  CString path = dlg.GetPathName();//得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt
  IplImage *frame1 = cvLoadImage(path,1);//从路径获取图像

/******************************/

  m_Image.CopyOf(frame1);
  //获得控件dc
  HDC dc = GetDlgItem(IDC_ShowImg)->GetDC()->m_hDC;
  //得到控件的大小
  CRect r;
  GetDlgItem(IDC_ShowImg)->GetClientRect(r);
  //显示图片
  m_Image.DrawToHDC(dc,r);

}

 

 

你可能感兴趣的:(C++,类,图片,控件)