opencv_contrib-3.0.0(opencv3.0对应的版本)(x64编译配置)+VS2013+cmake

24 篇文章 0 订阅
4 篇文章 0 订阅

opencv_contrib-3.0.0(opencv3.0对应的版本)(x64编译配置)+VS2013+cmake

编译

安装64位的,又折腾了一遍,又脱了层皮,不过这次终于弄懂了一点点个中原委。这个opencv_contrib是opencv的额外的包,包含了很多有用的功能,因为是额外的包,所以最后编译安装好是在opencv里的,所以下面源码路径里填的是opencv安装好的文件夹里的sources,和从github下载的压缩文件(opencv_contrib-3.0.0.zip)不同,那个只是额外的包。
在这里插入图片描述
注意x64要选好,这个是关键,否则就是默认win32的
在这里插入图片描述
然后configure和generate,成功后找到OPENCV_EXTRA_MODULES_PATH,填写F:/opencv/opencv_contrib-3.0.0_64/opencv_contrib-3.0.0/modules

(这里就是我一开始说的,额外需要添加的包就添加在这里,所以路径就是你下载的压缩文件opencv_contrib-3.0.0.zip解压后的文件夹,要添加的就是里面的modules)
(注意路径的斜杠要反过来,否则会报错)

然后configure和generate成功后可以关掉啦。打开生成的VS工程文件。
在这里插入图片描述
如果编译成功,打开之后会自动识别设置为x64,然后重新生成解决方案,成功!
在这里插入图片描述
找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”–>“仅生成INSTALL”
生成成功之后,再改成release,然后重新生成解决方案,然后再生成一遍install,最后生成的文件都在install里啦,然后就可以配置VS啦
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后总结一下编译完成的opencv_contrib-3.0.0的win32和x64文件夹:
win32:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

x64:
在这里插入图片描述
里面debug和release版本都生成啦!
在这里插入图片描述
从这里也可以看到,debug和release版本都生成啦!
在这里插入图片描述

配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
lib文件名字好像都一样,我直接从win32里复制过来的
在这里插入图片描述

opencv_bgsegm300.lib
opencv_bioinspired300.lib
opencv_calib3d300.lib
opencv_ccalib300.lib
opencv_core300.lib
opencv_datasets300.lib
opencv_face300.lib
opencv_features2d300.lib
opencv_flann300.lib
opencv_hal300.lib
opencv_highgui300.lib
opencv_imgcodecs300.lib
opencv_imgproc300.lib
opencv_line_descriptor300.lib
opencv_ml300.lib
opencv_objdetect300.lib
opencv_optflow300.lib
opencv_photo300.lib
opencv_reg300.lib
opencv_rgbd300.lib
opencv_saliency300.lib
opencv_shape300.lib
opencv_stitching300.lib
opencv_superres300.lib
opencv_surface_matching300.lib
opencv_text300.lib
opencv_tracking300.lib
opencv_video300.lib
opencv_videoio300.lib
opencv_videostab300.lib
opencv_xfeatures2d300.lib
opencv_ximgproc300.lib
opencv_xobjdetect300.lib
opencv_xphoto300.lib
opencv_bgsegm300d.lib
opencv_bioinspired300d.lib
opencv_calib3d300d.lib
opencv_ccalib300d.lib
opencv_core300d.lib
opencv_datasets300d.lib
opencv_face300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_hal300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_line_descriptor300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_optflow300d.lib
opencv_photo300d.lib
opencv_reg300d.lib
opencv_rgbd300d.lib
opencv_saliency300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_surface_matching300d.lib
opencv_text300d.lib
opencv_tracking300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
opencv_xfeatures2d300d.lib
opencv_ximgproc300d.lib
opencv_xobjdetect300d.lib
opencv_xphoto300d.lib

测试

  • 我的测试工程文件位置:E:\VStestlibrary\test_opencv
  • 编译安装路径:
    (win32)F:\opencv\opencv_contrib-3.0.0\install
    (x64)F:\opencv\opencv_contrib-3.0.0_64\opencv_contrib-3.0.0_64_build\install
  • 属性表:(和opencv同位置)

测试程序:

#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <iostream>

using namespace cv;
using namespace cv::xfeatures2d;
using namespace std;

int main(int argc, char** argv) {
	Mat src = imread("E:/VStestlibrary/test_opencv/test_opencv/0.jpg", IMREAD_GRAYSCALE);
	if (src.empty()) {
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	// SURF特征检测
	int minHessian = 100;
	Ptr<SURF> detector = SURF::create(minHessian);
	vector<KeyPoint> keypoints;
	detector->detect(src, keypoints, Mat());

	// 绘制关键点
	Mat keypoint_img;
	drawKeypoints(src, keypoints, keypoint_img, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
	imshow("KeyPoints Image", keypoint_img);

	waitKey(0);
	return 0;
}

结果:
win32:
release没问题,但是debug有问题,就是下面那个有未经处理的异常。(明明没编译配置x64的时候好好的,两个版本都没问题,咋加上八竿子打不着的x64编译出来的,就不行了呢?心累)
x64:
release没问题,但是debug有问题,就是下面那个有未经处理的异常。
在这里插入图片描述

问题

1. x64和x86冲突
编译完全没问题,但是到了VS重新生成解决方案的时候就开始了。想想完全按照步骤做的,为啥不承认,最后重新用Cmake编译了一遍就没问题了。
我想可能原因是我试了好几次,但是没有关闭重新设置路径还有x64这种,它不注意又自己改回默认值了?
2. error LINK2019 无法解析外部符号
在这里插入图片描述
发现都和opencv_ziv这个工程文件有关系,一开始直接搜link2019问题发现没什么用,后来才百度了一下opencv_ziv,发现确实是这的问题。
原因:貌似是opencv_ziv这个工程文件缺少这两个头文件对应的库(vtkOBJReader.h与vtkSTLReader.h对应vtkIOGeometry.lib)(都是vtk里的)
根据提供的错误信息查找:比如这里的VTK,查找vtkOBJReader.h与vtkSTLReader.h两个头文件,发现都在F:\VTK\src\vtk-v8.0.0\IO\Geometry文件中,那就找找看有没有跟IO 与 Geometry相关的lib。可以使用通配符帮助查找。结果就找到了vtkIOGeometry.lib.这个库。然后查看opencv_viz这个项目的属性,发现没有这个库。添加,尝试重新编译这个项目,结果通过。所以这个BUG就解决了。
参考:OpenCV_Viz——OpenCV中Viz的模块编译的无法解析的外部符号BUG
在这里插入图片描述
解决:在opencv_ziv项目属性的链接器——输入——附加依赖项里跟其他一样加入vtkIOGeometry-8.0.lib这个文件就好了!注意编译release版本的时候,路径要换一下,否则还是会有bug
在这里插入图片描述
3. 有未经处理异常(未解决!!!)
测试时出现的
在这里插入图片描述
在这里插入图片描述
未解决!!!!
4.
vs编译出现未加载 wntdll.pdb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值