您的位置:首页 > 运维架构

在MFC中使用OpenCV

2010-11-02 13:18 447 查看
1. 在项目属性中添加与你使用的OpenCV版本对应的库

highgui210d.lib
cxcore210d.lib
cv210d.lib
cvaux210d.lib
ml210d.lib


2. 在CXXApp::InitInstance()函数中

1)初始化为无窗口模式

// 分析标准外壳命令、DDE、打开文件操作的命令行
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; //初始化时无窗口


2) 最大化主窗口

// 主窗口已初始化,因此显示它并对其进行更新
//pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); //最大化窗口
pMainFrame->UpdateWindow();


3. 使CXXView继承CScrollView而不是CView

4. 在CXXView::OnInitialUpdate()函数中设置滚动

void CXXView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
//COpenCVMFCTestDoc* pDoc = GetDocument();
//if(pDoc->m_Image.GetImage() != NULL)
//	GetParentFrame()->MoveWindow(0, 0, pDoc->m_Image.Width(), pDoc->m_Image.Height());
CSize sizeTotal;
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
}


5. 在CXXDoc类中添加成员变量

CvvImage m_Image;

6. 在CXXDoc类中添加函数

BOOL CXXDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO:  在此添加您专用的创建代码
m_Image.Load(lpszPathName, 1);
return TRUE;
}
BOOL CXXDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
// TODO: 在此添加专用代码和/或调用基类
m_Image.Save(lpszPathName);
return TRUE;
}


7. 在CXXView::OnDraw(CDC* pDC)函数中添加代码

// CXXView 绘制
void COpenCVMFCTestView::OnDraw(CDC* pDC)
{
COpenCVMFCTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
CvvImage& img = pDoc->m_Image;
if (img.GetImage() != NULL)
{
CSize sizeTotal;
sizeTotal.cx = img.Width();
sizeTotal.cy = img.Height();
SetScrollSizes(MM_TEXT, sizeTotal);
img.Show(pDC->GetSafeHdc(), 0, 0, img.Width(), img.Height(), 0, 0);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: