VS2013配置OpenCV2.4.9的相关问题

1.Release下点击功能实现的按钮产生中断

如图所示,提示dll文件错误,具体是哪种dll文件没有区别。其原因是依赖库lib文件需要分开包含,即将后面带d的文件在debug中包含,不带d的文件在release中包含。在项目->属性中会发现上面可以选择debug还是release。选择release,链接器->输入->附加依赖项,取消下面的从父级或项目默认设置继承,只复制继承的值中的xxx249后面不带d!!!的lib,即(

opencv_objdetect249.lib

opencv_ts249.lib

opencv_video249.lib

opencv_nonfree249.lib

opencv_ocl249.lib

opencv_photo249.lib

opencv_stitching249.lib

opencv_superres249.lib

opencv_videostab249.lib

opencv_calib3d249.lib

opencv_contrib249.lib

opencv_core249.lib

opencv_features2d249.lib

opencv_flann249.lib

opencv_gpu249.lib

opencv_highgui249.lib

opencv_imgproc249.lib opencv_legacy249.lib

opencv_ml249.lib

粘贴到空白区,最后应用。同理,对debug也进行操作,但只粘贴带d的lib,即

opencv_ml249d.lib

opencv_calib3d249d.lib

opencv_contrib249d.lib

opencv_core249d.lib

opencv_features2d249d.lib

opencv_flann249d.lib

opencv_gpu249d.lib

opencv_highgui249d.lib

opencv_imgproc249d.lib

opencv_legacy249d.lib

opencv_objdetect249d.lib

opencv_ts249d.lib

opencv_video249d.lib

opencv_nonfree249d.lib

opencv_ocl249d.lib

opencv_photo249d.lib

opencv_stitching249d.lib

opencv_superres249d.lib opencv_videostab249d.lib

上述操作完成后如果编译时提示缺少dll,就把opencv目录下提示缺少的那个dll放到项目中去。比如我自己的路径D:Microsoft Visual Studio 12.0Opencvopencvuildx86vc12in,在这个文件夹中找到对应缺少的dll文件,将其复制到项目中如图所示。注意项目是32位的就再x86文件夹中,否则在x64中。vc12表示vs2013版本,其他就往前退一版。

到此应该就解决了上述问题。

2.与opencv中的类重名

以我自己为例,项目中本身定义了Vec的模板类,但opencv中也有Vec模板类。

方法一:修改类名

vs2013安装了番茄助手,直接右键类rename即可,根据提示一步步往下做。

方法二:添加命名空间

opencv中的Vec类是有cv这个命名空间的,而项目中的Vec类是没有单独添加的,可以通过添加一个新的命名空间用{}圈起,调用时注意带上命名空间即可。如vc::Vec

方法三:只在cpp文件中包含opencv的头文件

前两个方法是解决一般类重名问题,但由于我整个项目是基于自定义的Vec类建立的,采用前两种方法修改量巨大。。因此,对于opencv我只在cpp文件中,需要调用到该库的时候去包含,并且在调用时添加cv::作用域,当然也可以直接using namespace cv;这就可以很好地避免冲突问题。

经验分享 程序员 微信小程序 职场和发展