【目的】 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); }
2022-01-20 09:23:19 10.63MB MFC VS2008 VC2008 OpenCV
1
北航研究生课程计算机辅助几何设计(CAGD)的演示程序,可以生成指定次数指定类型的B样条曲线曲面,并可进行动态修改和图形变换。本程序使用VC2008编写,并采纳了Ribbon界面,简化了操作步骤。
2022-01-12 15:20:34 701KB Ribbon VC2008 CAGD B样条
1
vc++获取与清除chrome浏览器历史记录源代码
2021-12-31 16:45:54 304KB 源码 c++
1
用C语言实现的ICMP协议,实现一个ping的功能,适用于Win7系统,VS2008环境。
2021-12-22 08:43:23 6KB C ping ICMP VC2008
1
修复了上次发布版本,在win7中无法多次调用计划任务运行程序的问题,改用vista后API接口,实现多次调用计划任务运行程序,并能查看计划任务状态及是否正确运行。
2021-11-27 17:04:21 69KB SkipUAC UAC VC2008 ITaskService
1
VC2008和GDI+实现苹果DOCK工具栏的效果,有兴趣的可以看看。希望大家能继续优化,把这个做成控件,增强可移植性。
2021-10-30 21:59:08 620KB 苹果工具栏 DOCK工具栏
1
简单适用的ups状态监视器,比winpower占用资源少100倍,适用于山特等支持串口通信的ups,默认端口是com1,附件有ups通信协议书,可对ups添加各种操作。
2021-10-13 12:10:51 6.95MB ups状态监视器
1
公司做项目的代码,vs2008可以直接编译使用。duilib库做的虚拟键盘,外观和win8自带的虚拟键盘相识,可以做到置顶窗口和无焦点,包含了一个duilib阴影窗口的解决方案。其中的“切换输入法”按钮是模拟的点击windows键和空格键,所以如果你要使用这个功能可以修改成点击ctrl和shift键来切换。希望这个资源对你有用。
2021-10-11 13:53:11 4.35MB c++虚拟键盘 dui虚拟键盘 dui vc2008
1
Microsoft Visual C++运行库合集由国外网友McRip制作,包含了VC2005、VC2008、VC2010、VC2012等运行库,包含32及64位版本。这些运行库都是采用Microsoft Visual Studio 20XX编写的软件必须使用的公用DLL运行库。网上某些精简软件没有附带这些公用DLL,会导致这些绿化软件没法正常运行,出现“应用配置不正确”错误或者缺少msvcp71.dll、msvcr71.dll错误,安装对应VC库即可解决,这是最全最新的VC运行库的集合,安装完本库以后再使用绿色软件、游戏就不会再出这个错了。
2021-09-26 19:00:58 53MB 运行库 vc++
1
编译默认的库老是显示 无法解析的 _uncompress 之类 把代码重新新建工程编译了一下就解决了 编译环境: VS2008 ZLIB版本: 1.2.8 把头文件放在include目录 lib放在lib目录 使用: #include #pragma comment(lib,"zlib.lib") 就能使用了
2021-09-09 02:13:21 106KB zlib 静态库 VC2008
1