VC2008_OpenCV2.3.1图像处理平台

时间:2015-10-18 18:11:24
【文件属性】:

文件名称:VC2008_OpenCV2.3.1图像处理平台

文件大小:10.63MB

文件格式:ZIP

更新时间:2015-10-18 18:11:24

MFC VS2008 VC2008 OpenCV 图像处理

【目的】 1、了解OpenCV在MFC框架中的使用,建立基于VC + OpenCV的图像处理平台; 2、在此基础上实现简单的图像处理操作,包括图像的打开、显示、放大、缩小、保存。 【版本】 VC2008 + opencv 2.3.1 【详细实现步骤】 1、VC2008编译环境设置:工程中已预先设好,为保证能编译成功,自己需重新设置(include/lib/bin路径,略。。。); 2、视图显示选择OpenCV老式显示方法CvvImage,将CvvImage文件夹下两个文件加入工程中,stdafx.h中加入【#include "CvvImage/CvvImage.h"】 3、CMFC_OpenCVDoc文档类中加入变量: Mat m_originImage;//原始图像 Mat m_Image;//中间处理图像 4、重载虚函数OnOpenDocument函数,代码如下: BOOL CMFC_OpenCVDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; //使用Mat矩阵读取图像数据 m_originImage = imread((char*)lpszPathName); //原始数据留存,数据操作在m_Image上进行 m_originImage.copyTo(m_Image); return TRUE; } 5、重载虚函数OnSaveDocument,代码如下: BOOL CMFC_OpenCVDoc::OnSaveDocument(LPCTSTR lpszPathName) { if (!m_Image.empty()) { imwrite((char*)lpszPathName, m_Image); } return TRUE; } 6、视图类CMFC_OpenCVView中加入变量: CImage m_showImage;//图像显示变量 7、视图类CMFC_OpenCVView中OnDraw函数改写如下: void CMFC_OpenCVView::OnDraw(CDC* pDC) { CMFC_OpenCVDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; if (pDoc->m_Image.empty()) { return; } //获取需要显示的图像 IplImage* piI = &(pDoc->m_Image.operator IplImage()); //转化为合适显示的类型 m_showImage.CopyOf( piI ); //获取显示设备窗口 CRect rect; GetClientRect(▭); //把显示区的宽度设为图像的真实宽度和高度 rect.right=m_showImage.Width(); //CvvImage:Width()计算图像的宽度,单位像素 rect.bottom=m_showImage.Height();//CvvImage:Height()计算图像的高度,单位像素 //定义一个CSize对象,用于保存滚动条的尺寸,设为图像的真实尺寸 CSize sizeTotal(rect.right,rect.bottom); SetScrollSizes(MM_TEXT, sizeTotal);//设置滚动条的位置 //调用CvvImage类的成员函数DrawToHDC在视图窗口显示图像 //函数形参为当前的设备环境和显示区大小 m_showImage.DrawToHDC(pDC->GetSafeHdc(),rect); } 8、滚动条显示设置: 视图类CMFC_OpenCVView需继承于CScrollView类,而不是CView类,需要改动的地方还有,将以下语句 IMPLEMENT_DYNCREATE(CMFC_OpenCVView, CView) BEGIN_MESSAGE_MAP(CMFC_OpenCVView, CView) 改为: IMPLEMENT_DYNCREATE(CMFC_OpenCVView, CScrollView) BEGIN_MESSAGE_MAP(CMFC_OpenCVView, CScrollView); 另外,初始化时重载OnInitialUpdate函数如下: void CMFC_OpenCVView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); // TODO: 在此添加专用代码和/或调用基类 CSize sizeTotal; sizeTotal.cx = sizeTotal.cy = 60; SetScrollSizes(MM_TEXT, sizeTotal); }


【文件预览】:
MFC_OpenCV图像处理平台
----MFC_OpenCV.suo(69KB)
----Debug()
--------MFC_OpenCV.ilk(1.59MB)
--------MFC_OpenCV.exe(163KB)
--------MFC_OpenCV.pdb(4.64MB)
----使用前必读.txt(3KB)
----MFC_OpenCV.sln(896B)
----MFC_OpenCV.ncb(26.34MB)
----MFC_OpenCV()
--------resource.h(870B)
--------ChildFrm.cpp(1KB)
--------Debug()
--------MFC_OpenCVView.h(1KB)
--------MFC_OpenCV.h(494B)
--------MFC_OpenCVView.cpp(3KB)
--------MFC_OpenCVDoc.h(825B)
--------stdafx.h(2KB)
--------ReadMe.txt(4KB)
--------res()
--------MFC_OpenCV.vcproj.XP-201202231733.Administrator.user(1KB)
--------MFC_OpenCV.rc(13KB)
--------CvvImage()
--------MainFrm.h(632B)
--------stdafx.cpp(141B)
--------ChildFrm.h(541B)
--------ClassDiagram1.cd(143B)
--------MainFrm.cpp(2KB)
--------MFC_OpenCV.cpp(4KB)
--------MFC_OpenCV.aps(67KB)
--------targetver.h(1KB)
--------MFC_OpenCVDoc.cpp(2KB)
--------MFC_OpenCV.vcproj(6KB)

网友评论

  • 和我用的版本不一样,不过有参考价值
  • 可以参考一下
  • 不是基于mfc平台,瞎扯
  • 很实用,对我帮助很大。
  • 绝对的新手 非常感谢 说明很详细
  • 初学者,还是比较实用的东西。。。。
  • 入门资源,,有用~~~~
  • 很不错的资源,可以运行
  • 我很喜欢,帮助很大呀
  • 初学者可以参考一下
  • 对初学者来还凑合
  • 总结的不错。
  • 虽然是opencv基础的东西,但有详细的说明。
  • 我把OpenCV引用改为2.4.2 编译可以通过,可是提示没有tbb_debug.dll不存在。
  • 可以作为一个基础,向内部添加更多图像处理及分析的功能,很好!
  • 帮到我啦,谢谢~可以参考一下