OpenCV中文网(http://www.opencv.org.cn/index.php)上给出的关于64位系统的配置是有问题的,下面这个方案是我参考网上的一些配置方案修正过的。
1、
下载 OpenCV-2.3.1.exe ,解压并放到某个目录下,例如 D:OpenCV
2、配置环境变量:在path环境变量中添加D:OpenCVuildx64vc10in以及D:OpenCVuildcommon bbintel64vc10,中间以分号隔开;2.4.3版本的opencv内嵌了TBB的功能,所以取消了TBB直接安装,这样就不需要再配置TBB环境变量了。重启,使之生效(不重启貌似也行)。安装路径不同,对照修改即可,如安装在E:OpenCV,则相应修改路径即可,下面不再赘述。
以下为使用opencv时的配置过程,每个项目都需要重复以下过程,如果嫌麻烦,你也可以配置好以后,将项目配置保存为一个模板,供下次直接使用。
3、 新建一个C++的win32控制台程序;
4、点击“项目”—“属性”,在弹出的对话框最上方选择“配置管理器”按钮,在弹出的“配置管理器”对话框中,点击右边的“活动解决方案平台(P)”的下拉列表,点击“新建”
弹出“新建解决方案平台”对话框,
在“键入或选择新平台”中选择“x64”,“从此处复制设置”中选择”Win32”,勾选“创建新的项目平台”,点击确定。返回“配置管理器页面”,点击“关闭”。
附注:这里项目平台指的是应用程序运行的平台,若用默认win32,则生成的程序不能在你本机64下运行
5、在“配置属性”—“C/C++”—“常规”—“附加包含目录”中,添加目录:
D:OpenCVuildinclude
D:OpenCVuildincludeopencv
D:OpenCVuildincludeopencv2
注意:这里OpenCV中文网上(http://www.opencv.org.cn/index.php/VC_2010_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.3)说的是在“VC++ 目录”子项下的附加包含目录里添加这些头文件目录,但这可能导致覆盖掉VC++编译本身需要的一些头文件目录,导致编译错误。我的电脑上反正不行,大家可以试一下。
6、在“链接器”—“常规”—“附加库目录”中,添加目录:
D:OpenCVuildx64vc10lib
7、 在“链接器”—“输入”—“附加依赖项”中添加以下库文件(根据需要删减,若是其他版本则对应修改数字即可,如2.4.3版本,将231改为243即可):
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib
点击“应用”-“确定”,返回主界面。
此外,也可采用在主函数中添加类似
#ifdef _DEBUG #pragma comment(lib,"opencv_core230d.lib") #pragma comment(lib,"opencv_highgui230d.lib") #pragma comment(lib,"opencv_imgproc230d.lib") #else #pragma comment(lib,"opencv_core230.lib") #pragma comment(lib,"opencv_highgui230.lib") #pragma comment(lib,"opencv_imgproc230.lib") #endif
代码的方式,这样不管debug还是release均能适用,不用人为重复
8、添加测试代码:
/*********************************************************************** * OpenCV 2.4.3 测试例程 * 于仕琪 提供 ***********************************************************************/ #include "stdafx.h" #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int _tmain(int argc, _TCHAR* argv[]) { const char* imagename = "lena.jpg"; //从文件中读入图像 Mat img = imread(imagename); //如果读入图像失败 if(img.empty()) { fprintf(stderr, "Can not load image %s ", imagename); return -1; } //显示图像 imshow("image", img); //此函数等待按键,按键盘任意键就返回 waitKey(); return 0;
生成项目解决方案,若成功,则说明配置完成。
9、上面都是Debug版本的配置,若是Release版本的配置,同理,除了库文件所有项中去掉d即可。