在MFC中使用OpenCV

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); } } 

 

 

 

 

 

 

你可能感兴趣的:(image,null,mfc)