您的位置:首页 > 编程语言 > C语言/C++

VC++2008中快速运用OpenCV打开图像文档

2015-07-06 10:44 357 查看


VC++2008中快速运用OpenCV打开图像文档

【问题的提出】
在VC++2008中,希望能够通过建立MFC应用程序来调用OpenCV中的函数,来打开图像文件。
【问题的解决】
完整的带图文档,我放在这个位置:
http://download.csdn.net/detail/huanghanyu11/4248406
(1)在VC++界面中,创建项目
(2)选择MFC应用程序,命名为test_MFC
(3)进入MFC应用程序向导,概述界面中了解一下信息,略过,下一步
(4)在MFC应用程序向导中,应用程序类型界面中

选择:

单个文档,MFC标准,视觉样式和颜色选择Widows本机/默认

默认勾选了使用Unicode库

下一步
(5)在MFC应用程序向导中,复合文档支持界面中

默认:无

下一步
(6)文档模板字符串界面中,默认自动生成的字符串,

修改主题框架标题名为:MFC下实现OpenCV

下一步
(7)数据库支持界面,默认:无

下一步
(8)用户界面功能界面中,默认自动勾选的,

之后将命令栏勾点使用经典菜单

下一步
(9)在高级功能界面中,把默认勾选的ActiveX控件的勾去掉

下一步
(10)在生成的类的界面中,默认自动生成的名称

完成。
(11)在解决方案中的项目名test_MFC的右键点击属性

对属性页进行对“活动(Debug)”和“release”配置操作,

在“配置属性”下的“链接器”下的“输入”中添加依赖项,

点击“…”,即进入编辑框,分行输入cxcore200d.lib、cv200d.lib和highgui200d.lib



(12)进入类视图,点击类名Ctest_MFCDoc,
在类Ctest_MFCDoc的首行添加#include "highgui.h"
在类Ctest_MFCDoc中声明受保护的变量:CImage m_image;
为类Ctest_MFCDoc添加重写函数OnOpenDocument

函数代码:

BOOL Ctest_MFCDoc::OnOpenDocument(LPCTSTR lpszPathName)

{

if (!CDocument::OnOpenDocument(lpszPathName))

return FALSE;
// TODO: 在此添加您专用的创建代码

m_image.Load(lpszPathName);
return TRUE;

}

为类Ctest_MFCDoc添加重写函数OnSaveDocument
函数代码:

BOOL Ctest_MFCDoc::OnSaveDocument(LPCTSTR lpszPathName)

{

// TODO: 在此添加专用代码和/或调用基类

m_image.Save(lpszPathName);

return TRUE;
//return CDocument::OnSaveDocument(lpszPathName);

}

(13)进入类视图,点击类名Ctest_MFCView

找到已经存在的默认的重写函数OnDraw
添加代码如下:

void Ctest_MFCView::OnDraw(CDC* pDC)

{

Ctest_MFCDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;
// TODO: 在此处为本机数据添加绘制代码

CImage & img = pDoc ->m_image;

CRect r;

GetClientRect (&r);

img.DrawToHDC(pDC->GetSafeHdc() ,r);

}

(14)运行后报错:

1>f:\documents and settings\administrator\my documents\visual studio 2008\projects\test_mfc\test_mfc\test_mfcdoc.cpp(87) : error C2664: “CvvImage::Load”: 不能将参数从“LPCTSTR”转换为“const char *”
1> 与指向的类型无关;转换要求reinterpret_cast、C 样式转换或函数样式转换
1>f:\documents and settings\administrator\my documents\visual studio 2008\projects\test_mfc\test_mfc\test_mfcdoc.cpp(95) : error C2664: “CvvImage::Save”: 不能将参数从“LPCTSTR”转换为“const char *”
1> 与指向的类型无关;转换要求reinterpret_cast、C 样式转换或函数样式转换
1>test_MFCView.cpp
1>f:\documents and settings\administrator\my documents\visual studio 2008\projects\test_mfc\test_mfc\test_mfcview.cpp(60) : error C2065: “pDC”: 未声明的标识符
1>f:\documents and settings\administrator\my documents\visual studio 2008\projects\test_mfc\test_mfc\test_mfcview.cpp(60) : error C2227: “->GetSafeHdc”的左边必须指向类/结构/联合/泛型类型
(15)寻找出错原因:

1.“CvvImage::Load”: 不能将参数从“LPCTSTR”转换为“const char *”:使用了字符集unicode,所以有这个错误

2.“CvvImage::Save”: 不能将参数从“LPCTSTR”转换为“const char *”:使用了字符集unicode,所以有这个错误

3.“pDC”: 未声明的标识符:void Ctest_MFCView::OnDraw(CDC* /*pDC*/)中的输入参数pDC被注释掉,需要把注释符去掉

4.“->GetSafeHdc”的左边必须指向类/结构/联合/泛型类型:void Ctest_MFCView::OnDraw(CDC* /*pDC*/)中的输入参数pDC被注释掉,需要把注释符去掉
(16)运行后,正常

转自http://www.cnblogs.com/huangweilin/archive/2012/04/23/2465964.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: