Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)

一般出现找不到.lib库文件都是环境变量配置没弄好或者是依赖项或包含库没设置好,下面是我的步骤,大家可以参考以下(大家一定要注意环境变量哪里的bin别弄成lib,2天不断重装的血泪教训)

1.CMake的下载

下载链接: https://cmake.org/download/.
CMake的下载,这里我觉得版本越新越好
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第1张图片
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第2张图片
这里需要勾选创建桌面图标,不创建的话可以自己去自己定义的安装目录找。
安装过程都是常规操作;这里就不讲解了。

2.opencv_contrib3.4.1下载安装

这里的opencv_contrib3.4.1一定要对应自己安装的opencv版本,我的是opencv3.4.1版本
下载链接: https://github.com/opencv/opencv_contrib/releases.
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第3张图片

3.Cmake的编译

打开下载好的Cmake软件
在opencv3.4.1目录中新建tools文件夹(用于存放Cmake之后的拓展包)
分别指定opencv3.4.1的sources的文件夹目录和存放的tools目录
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第4张图片

Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第5张图片

点击configue
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第6张图片

点finish后需要等很长一段时间。
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第7张图片
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第8张图片
然后找到OPENCV_EXTRA_MODULES_RATH一项,添加你刚刚解压的contrib3.4.1中的modules目录,
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第9张图片
最后选择generate开始编译。
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第10张图片
完成之后如果在你自定义的输出文件夹中找到“OpenCV.sln”文件,即表明编译成功。

Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第11张图片
点击open project;
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第12张图片
如图所示点击“生成—>生成解决方案(F6)”,需要等很长一段时间。

Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第13张图片
点击INSTALL安装库文件
解决方案资源管理器—>CMakeTargets—>INSTALL—>仅用于项目—>仅生成INSTALL”
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第14张图片
最后我们找到多出来的install文件夹
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第15张图片
进到里面去可以找到我们用的库(在x64->VC15->lib)这里的VC15对应的意思是VS2017。
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第16张图片

3.配置环境变量

电脑->属性->高级系统设置

Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第17张图片

Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第18张图片
之后把install的lib文件添加进去
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第19张图片

4.新建一个测试代码

#include
#include
#include

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

int main(int argc, char** argv) {
Mat src = imread(“D:/image2/43.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 detector = SURF::create(minHessian);
vector 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;

}

包含目录、库目录

视图——其他窗口——属性管理器
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第20张图片
这里就多出了个窗口。
Debug|x64—— 右键——属性
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第21张图片
包含目录库目录这里面分别添加路径(注意是添加install里面的)

Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第22张图片
Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题)_第23张图片

这里如果代码不成功,可以去修改环境变量、包含目录、库目录、以及依赖项。修改环境变量记得重启电脑,否则不起作用。

附加依赖项(如果这里复制不了,可以去这个地址)

opencv_aruco341d.lib
opencv_bgsegm341d.lib
opencv_bioinspired341d.lib
opencv_calib3d341d.lib
opencv_ccalib341d.lib
opencv_core341d.lib
opencv_datasets341d.lib
opencv_dnn341d.lib
opencv_dnn_objdetect341d.lib
opencv_dpm341d.lib
opencv_face341d.lib
opencv_features2d341d.lib
opencv_flann341d.lib
opencv_fuzzy341d.lib
opencv_hfs341d.lib
opencv_highgui341d.lib
opencv_imgcodecs341d.lib
opencv_imgproc341d.lib
opencv_img_hash341d.lib
opencv_line_descriptor341d.lib
opencv_ml341d.lib
opencv_objdetect341d.lib
opencv_optflow341d.lib
opencv_phase_unwrapping341d.lib
opencv_photo341d.lib
opencv_plot341d.lib
opencv_reg341d.lib
opencv_rgbd341d.lib
opencv_saliency341d.lib
opencv_shape341d.lib
opencv_stereo341d.lib
opencv_stitching341d.lib
opencv_structured_light341d.lib
opencv_superres341d.lib
opencv_surface_matching341d.lib
opencv_text341d.lib
opencv_tracking341d.lib
opencv_video341d.lib
opencv_videoio341d.lib
opencv_videostab341d.lib
opencv_xfeatures2d341d.lib
opencv_ximgproc341d.lib
opencv_xobjdetect341d.lib
opencv_xphoto341d.lib

代码演示

#include 
#include 
#include 

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

int main(int argc, char** argv) {
	Mat src = imread("D:/image2/43.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 detector = SURF::create(minHessian);
	vector 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;
}

你可能感兴趣的:(Opencv3.4.1+contrib3.4.1+vs2017配置(主要解决了编译的时候找不到.lib文件的问题))