MFC中CvvImage类的应用
来源:互联网 发布:燃情岁月知乎 编辑:程序博客网 时间:2024/05/17 05:55
CVVImage类
OPENCVhighgui.h中定义的CvvImage类,可以很好的实现opencv和windowsMFC显示接口。
将CvvImage.cpp和CvvImage.h加入到工程中后,可以很容易的在windows窗口中显示图像。
void CDistance::DrawPicToHDC(IplImage *img, UINT ID) //自己添加的类函数,前面需添加声明{CDC *pDC = GetDlgItem(ID)->GetDC(); //GetDlgItem(ID)通过资源ID获取对话框控件内的指针;这句话表示获取某控件内的设备绘图指针HDC hDC= pDC->GetSafeHdc();//获取该DC指针的句柄CRect rect;GetDlgItem(ID)->GetClientRect(&rect);//获取控件的坐标范围CvvImage cimg;cimg.CopyOf( img ); // 复制图片cimg.DrawToHDC( hDC, &rect ); // 将图片绘制到显示控件的指定区域内ReleaseDC( pDC );}
void CDistance::OnPaint() //OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。当Windows或应用程序请求重画应用程序窗口的一部分时,框架调用这个成员函数。{CPaintDC dc(this); // device context for painting// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CDialogEx::OnPaint()CRect rectL;GetDlgItem(IDC_AddSiftImg)->GetClientRect(&rectL);////此处获得坐标范围只是为了根据控件的范围来重新构图int row,colume;row=rectL.bottom-rectL.top;colume=rectL.right-rectL.left;IplImage *resizeimage=cvCreateImage(cvSize(colume,row), siftimg->depth, siftimg->nChannels);cvResize(siftimg,resizeimage);DrawPicToHDC(resizeimage, IDC_AddSiftImg);//IDC_AddSiftImg是资源ID}
以以上程序为例:
资源ID:IDC_AddSiftImg
指针:GetDlgItem(IDC_AddSiftImg)
类:CDC *pDC=GetDlgItem(IDC_AddSiftImg)->GetDC();
句柄: HDC hDC=pDC->GetSafeHdc()
HINSTANCE:
HANDLE:
HWND:
HPEN:
HBITMAP:
HDC:
CWnd:
CDC:
句柄和类的相互转换:
1.句柄构造类
1.1
CDC *pDC = CDC::FromHandle(hDC); //MFC不保证什么时候删除DCCBitmap *pBmp = CBitmap::FromHandle(hBitmap)
1.2
CDC dc; dc.Attach(hDC); //窗口绑定,永久的,一直到你删除它 //..........// dc.Detach(hDC); //当不用的时候要销毁
2.从类得到句柄
CDC dc; HDC hDC; hDC = dc.GetSafeHdc();
CDC类下面有4个子类:
(CDC是进行设备环境处理的类,GDI和GDI+显示类库需要这个设备显示对象(包括图像,画笔,线条,画刷等))
1.
//
2.
//For
void CMainWindow::OnLButtonDown (UINT nFlags, CPoint point) { CRect rect; GetClientRect (&rect); CClientDC dc (this); dc.MoveTo (rect.left, rect.top); dc.LineTo (rect.right, rect.bottom); dc.MoveTo (rect.right, rect.top); dc.LineTo (rect.left, rect.bottom); }
3.
//For
不仅是客户区,还包括窗口客户区以外的部分(如窗口标题栏、菜单栏等)需要需要重画时,系统向程序发出WM_NCPAINT消息。因标准窗口的客户区以外部分为窗口必需部分,因而WM_NCPAINT消息将默认被发送到DefWindowProc函数进行默认处理。程序可通过截获该消息来实现窗口其他部分的自定义绘制。使用的是CWindowDC
4.
上面这4个子类由于构造和析构函数在获取和释放DC的时候会调用合适的函数,所以可以直接使用,不用释放DC,而CDC就要释放资源RealseDC()
实例1:
实例2:
void
//注:CreateDC()
CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄.
参考:
- MFC中CvvImage类的应用
- CvvImage类在MFC中使用的说明
- CvvImage类在MFC中使用的说明
- OpenCV2没有了CvvImage,抄下低版本的CvvImage,可用于MFC中。
- [转]CvvImage类以及在MFC中显示IplImage图像的方法
- CvvImage类以及在MFC中显示IplImage图像的方法(转)
- CvvImage类以及在MFC中显示IplImage图像的方法
- CvvImage类以及在MFC中显示IplImage图像的方法
- 利用CvvImage类在MFC控件中显示图片
- OpenCV中CvvImage类的具体实现
- mfc+CvvImage类 显示工程目录下的图片
- 利用VS+MFC+Opencv显示图像和视频所需添加类(CvvImage.h和CvvImage.cpp的源码)。
- 在MFC控件中显示opencv库中的图像或者视频用的CvvImage
- 在MFC控件中显示opencv库中的图像或者视频用的CvvImage
- 在OpenCV2.2后的版本中没有CvvImage类的解决方法(及出现错误:IntelliSense: 未定义标识符 "CvvImage")
- MFC中在对话框中显示图片(从此摆脱opencv升级后无CvvImage的烦恼)
- CvvImage类
- CvvImage类
- POJ 3925 Minimal Ratio Tree
- Excel AddIn 开发(二)
- 华为S5700配置
- easyui 分页控件 显示页码 宽度问题
- android 手机定位并获取城市信息
- MFC中CvvImage类的应用
- 兼容主流浏览器 的html 视频播放器
- PAT A 1014. Waiting in Line (30)
- linux环境下maven安装与配置
- 用DPM(Deformable Part Model,voc-release3.1)算法在INRIA数据集上训练自己的人体检测模型
- 如何解决excel打印预览不可用的问题
- Ext入门学习系列一、二、三
- Smarty常用函数
- hudson远程部署到jboss4.2.2