VC调用OPENCV环境设置及程序例子
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选择 Library files,在其中添加 C:\Program Files\OpenCV\lib 注意:(防止每次都拷贝.dll 文件)
在 Project Setting ->Link 的 Input 选项中,添加 cv.lib cxcore.lib highgui.lib 三个库文件(这 一步对于每个新工程都要重新设置,而前三步不需要)。
方法二: 在 Tools 菜单下选择 Options 子菜单,在弹出的对话框中选择 Directory,将用到的几个库 的路径添加进去。以后只需将所用的库在 Object /library modules 下输入就可以了,不用再 每次指定路径。 在 Show directories for 下拉菜单中选择 Include files,输入: C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\otherlibs\cvcam\include
方法一: (1)运行 VC 6.0,打开 opencv/_make 目录下的 opencv.dsw 文件 然后点击‘组建(Build) ‘-‘ 批组建(Batch Build)‘(编译大概几分钟). (2)点击‘工具(Tools)‘-‘选项(Options)‘-‘目录(Directories)选项卡‘, 在 Include files 下添加: J:“Program Files“OpenCV“cv“include J:“Program Files“OpenCV“otherlibs“highgui J:“Program Files“OpenCV“cxcore“include J:“Program Files“OpenCV“otherlibs“cvcam“include (3)在 Library files 下添加 J:“Program Files“OpenCV“lib (4)在 Source files 下添加 J:“Program Files“OpenCV“cv“src J:“Program Files“OpenCV“cxcore“src J:“Program Files“OpenCV“cvaux“src J:“Program Files“OpenCV“otherlibs“highgui J:“Program Files“OpenCV“otherlibs“_graphics“src (5) 谨记:每次建立工程,运行前在‘工程(Project)‘-‘设置(Settings)‘-‘连接 (Link)选项卡‘-‘对象/库模块(Object/library modules)‘ 中添加: cv.lib highgui.lib cxcore.lib cvcam.lib
选择 Source files,在其中添加 C:\Program Files\OpenCV\cv\src C:\Program Files\OpenCV\cvaux\src C:\Program Files\OpenCV\cxcore\src C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\otherlibs\cvcam\src\windows
Biblioteka Baidu
cvReleaseImage(m_cvImage); m_cvImage = cvLoadImage(Open_Filename,1); if (m_cvImage==0) MessageBox("Reading Failed"); else DrawPicToHDC(m_cvImage, IDC_SHOW_WINDOW); } } //====================================== ===== 至此,运行程序,当点击“读图”按钮时,会弹出对话框,提示用户选择需要读入的图片, “确定”后程序便会在 Picture 控件中将图片显示出来. (6)添加 Edit 控件,ID 号为 IDC_EDIT_TH,应用向导工具 MFC ClassWizard 给该 ID 添加 int 型的成员变量 m_Th.通过 Edit 控件 IDC_EDIT_TH,用户可以输入图像分割阈值,程序会 将其自动更新到 m_Th. (7)添加 Button 按钮,ID 号为 IDC_THRESHOLD,标题为“阈值分割”,点击它将对业已 打开的图片做二值化分割.对该按钮添加消息响应函数 OnThreshold(): void COpenCV_Dlg1Dlg::OnThreshold() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (m_cvImage==NULL) MessageBox("NO Source Image Found!","Warning"); else { IplImage dst=cvCreateImage( cvSize(m_cvImage-width,m_cvImage-height), m_cvImage -depth, m_cvImage-nChannels ); cvThreshold( m_cvImage, dst, m_Th, 255, CV_THRESH_BINARY); //原型:void cvThreshold( IplImage src, IplImage dst, float thresh, float maxvalue, CvThreshType type); cvNamedWindow("Threshold"); //设置窗口名称 cvShowImage("Threshold",dst); //显示图片 cvWaitKey(0); } } //====================================== ====== 至此,当点击“读图”按钮打开一幅图片,该图片将在 Picture 控件中显示;在 Edit 控件 IDC_EDIT_TH 中输入阈值,并点击“阈值分割”按钮,则对读入的图像做二值化处理,处 理结果在一个新弹出窗口中显示. 以上所编写程序是个试验性程序,从中可以反应出用 OpenCV 编程的一般性步骤.但该程序 依然存在 Bug:即显示在 Picture 控件中的图像不会重绘,也就是说如果用另外一个窗口遮 挡 Picture 控件中的图像,当该窗口移去时被遮挡部分的图像便显示一片空白.此问题有待对 程序进一步查错.
我的电脑—属性—高级—环境变量—path—C:\Program Files\OpenCV\bin
下面给出我所编写的一个简单的应用 OpenCV 的例子. (1)建立一个基于 Dialog 的 MFC 工程 OpenCV_Dlg1,在头文件 OpenCV_Dlg1Dlg.h 中加 入“#include cv.h”,“#include highgui.h”宏命令语句. (2)添加 Picture 控件,ID 号为 IDC_SHOW_WINDOW,图像将显示在该控件中. (3)给 COpenCV_Dlg1Dlg 类添加成员变量 IplImage m_cvImage,属性为 Public.并在构造 函数 COpenCV_Dlg1Dlg::COpenCV_Dlg1Dlg()中将其初始化为 NULL,即添加“m_cvImage =NULL;”语句. (4)OpenCV 有现成的函数 cvShowImage()来显示图像,但用该函数显示图像是却是另 外开辟了一个弹出窗口并在其中显示,为了在我们建立的 Picture 控件中显示图像,需在 COpenCV_Dlg1Dlg 类中添加成员函数 void DrawPicToHDC(IplImage img, UINT ID),属 性设置为 Public.DrawPicToHDC()函数代码为: void COpenCV_Dlg1Dlg::DrawPicToHDC(IplImage img, UINT ID) { CDC pDC = GetDlgItem(ID)-GetDC(); HDC hDC= pDC-GetSafeHdc(); CRect rect; CWnd pWnd; pWnd=GetDlgItem(ID); pWnd - SetWindowPos ( NULL , 0 , 0 , img - width , img - height , SWP_NOZORDER SWP_NOMOVE ); pWnd-GetClientRect(rect); CvvImage cimg; cimg.CopyOf(img); cimg.DrawToHDC(hDC,rect); ReleaseDC(pDC); } //====================================== ==== (5)添加 Button 按钮,ID 号为 IDC_READ_PIC,标题为“读图”,用于打开一幅图片.对该 按钮添加消息响应函数 OnReadPic(): void COpenCV_Dlg1Dlg::OnReadPic() { // TODO: Add your control notification handler code here CString Open_Filename; CFileDialog fDlg ( TRUE , "bmp" , ".bmp" , OFN_HIDEREADONLY OFN_OVERWRITEPROMPT, "原始图像(.bmp) .bmp 所有文件(.) .",NULL); if (fDlg.DoModal() == TRUE) { Open_Filename = fDlg.GetFileName(); if(m_cvImage)
在 Project Setting ->Link 的 Input 选项中,添加 cv.lib cxcore.lib highgui.lib 三个库文件(这 一步对于每个新工程都要重新设置,而前三步不需要)。
方法二: 在 Tools 菜单下选择 Options 子菜单,在弹出的对话框中选择 Directory,将用到的几个库 的路径添加进去。以后只需将所用的库在 Object /library modules 下输入就可以了,不用再 每次指定路径。 在 Show directories for 下拉菜单中选择 Include files,输入: C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\otherlibs\cvcam\include
方法一: (1)运行 VC 6.0,打开 opencv/_make 目录下的 opencv.dsw 文件 然后点击‘组建(Build) ‘-‘ 批组建(Batch Build)‘(编译大概几分钟). (2)点击‘工具(Tools)‘-‘选项(Options)‘-‘目录(Directories)选项卡‘, 在 Include files 下添加: J:“Program Files“OpenCV“cv“include J:“Program Files“OpenCV“otherlibs“highgui J:“Program Files“OpenCV“cxcore“include J:“Program Files“OpenCV“otherlibs“cvcam“include (3)在 Library files 下添加 J:“Program Files“OpenCV“lib (4)在 Source files 下添加 J:“Program Files“OpenCV“cv“src J:“Program Files“OpenCV“cxcore“src J:“Program Files“OpenCV“cvaux“src J:“Program Files“OpenCV“otherlibs“highgui J:“Program Files“OpenCV“otherlibs“_graphics“src (5) 谨记:每次建立工程,运行前在‘工程(Project)‘-‘设置(Settings)‘-‘连接 (Link)选项卡‘-‘对象/库模块(Object/library modules)‘ 中添加: cv.lib highgui.lib cxcore.lib cvcam.lib
选择 Source files,在其中添加 C:\Program Files\OpenCV\cv\src C:\Program Files\OpenCV\cvaux\src C:\Program Files\OpenCV\cxcore\src C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\otherlibs\cvcam\src\windows
Biblioteka Baidu
cvReleaseImage(m_cvImage); m_cvImage = cvLoadImage(Open_Filename,1); if (m_cvImage==0) MessageBox("Reading Failed"); else DrawPicToHDC(m_cvImage, IDC_SHOW_WINDOW); } } //====================================== ===== 至此,运行程序,当点击“读图”按钮时,会弹出对话框,提示用户选择需要读入的图片, “确定”后程序便会在 Picture 控件中将图片显示出来. (6)添加 Edit 控件,ID 号为 IDC_EDIT_TH,应用向导工具 MFC ClassWizard 给该 ID 添加 int 型的成员变量 m_Th.通过 Edit 控件 IDC_EDIT_TH,用户可以输入图像分割阈值,程序会 将其自动更新到 m_Th. (7)添加 Button 按钮,ID 号为 IDC_THRESHOLD,标题为“阈值分割”,点击它将对业已 打开的图片做二值化分割.对该按钮添加消息响应函数 OnThreshold(): void COpenCV_Dlg1Dlg::OnThreshold() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (m_cvImage==NULL) MessageBox("NO Source Image Found!","Warning"); else { IplImage dst=cvCreateImage( cvSize(m_cvImage-width,m_cvImage-height), m_cvImage -depth, m_cvImage-nChannels ); cvThreshold( m_cvImage, dst, m_Th, 255, CV_THRESH_BINARY); //原型:void cvThreshold( IplImage src, IplImage dst, float thresh, float maxvalue, CvThreshType type); cvNamedWindow("Threshold"); //设置窗口名称 cvShowImage("Threshold",dst); //显示图片 cvWaitKey(0); } } //====================================== ====== 至此,当点击“读图”按钮打开一幅图片,该图片将在 Picture 控件中显示;在 Edit 控件 IDC_EDIT_TH 中输入阈值,并点击“阈值分割”按钮,则对读入的图像做二值化处理,处 理结果在一个新弹出窗口中显示. 以上所编写程序是个试验性程序,从中可以反应出用 OpenCV 编程的一般性步骤.但该程序 依然存在 Bug:即显示在 Picture 控件中的图像不会重绘,也就是说如果用另外一个窗口遮 挡 Picture 控件中的图像,当该窗口移去时被遮挡部分的图像便显示一片空白.此问题有待对 程序进一步查错.
我的电脑—属性—高级—环境变量—path—C:\Program Files\OpenCV\bin
下面给出我所编写的一个简单的应用 OpenCV 的例子. (1)建立一个基于 Dialog 的 MFC 工程 OpenCV_Dlg1,在头文件 OpenCV_Dlg1Dlg.h 中加 入“#include cv.h”,“#include highgui.h”宏命令语句. (2)添加 Picture 控件,ID 号为 IDC_SHOW_WINDOW,图像将显示在该控件中. (3)给 COpenCV_Dlg1Dlg 类添加成员变量 IplImage m_cvImage,属性为 Public.并在构造 函数 COpenCV_Dlg1Dlg::COpenCV_Dlg1Dlg()中将其初始化为 NULL,即添加“m_cvImage =NULL;”语句. (4)OpenCV 有现成的函数 cvShowImage()来显示图像,但用该函数显示图像是却是另 外开辟了一个弹出窗口并在其中显示,为了在我们建立的 Picture 控件中显示图像,需在 COpenCV_Dlg1Dlg 类中添加成员函数 void DrawPicToHDC(IplImage img, UINT ID),属 性设置为 Public.DrawPicToHDC()函数代码为: void COpenCV_Dlg1Dlg::DrawPicToHDC(IplImage img, UINT ID) { CDC pDC = GetDlgItem(ID)-GetDC(); HDC hDC= pDC-GetSafeHdc(); CRect rect; CWnd pWnd; pWnd=GetDlgItem(ID); pWnd - SetWindowPos ( NULL , 0 , 0 , img - width , img - height , SWP_NOZORDER SWP_NOMOVE ); pWnd-GetClientRect(rect); CvvImage cimg; cimg.CopyOf(img); cimg.DrawToHDC(hDC,rect); ReleaseDC(pDC); } //====================================== ==== (5)添加 Button 按钮,ID 号为 IDC_READ_PIC,标题为“读图”,用于打开一幅图片.对该 按钮添加消息响应函数 OnReadPic(): void COpenCV_Dlg1Dlg::OnReadPic() { // TODO: Add your control notification handler code here CString Open_Filename; CFileDialog fDlg ( TRUE , "bmp" , ".bmp" , OFN_HIDEREADONLY OFN_OVERWRITEPROMPT, "原始图像(.bmp) .bmp 所有文件(.) .",NULL); if (fDlg.DoModal() == TRUE) { Open_Filename = fDlg.GetFileName(); if(m_cvImage)