1.首先自行安装vs2017社区版(也可选择专业版),选择C++相关组件
2.然后在OpenCV官网下载OpenCV3.4.0
这里只下载Sources文件即可。
3.在GitHub上下载opencv_contrib3.4.0文件
添加链接描述
注意选择Tags,然后下载zip文件
4.下载CMakecmake-3.12.0-rc3-win64-x64
添加链接描述
点击Older Releases这里链接选择以前的版本
下载cmake-3.12.0-rc3-win64-x64.msi
一般将CMake安装在默认路径即可。
5.将下载好的OpenCV3.4.0和opencv_contrib3.4.0解压出来放在同一个文件夹中
在opencv3.4.0文件夹中新建一个“myBuild”文件夹
6.打开CMake(cmake-gui)
cource code路径选择刚解压出来的opencv3.4.0文件夹
binaries路径选择刚才新建的“myBuild”文件夹
7.然后点击【Configure】会弹出选择VS的界面,我选的是Visual Studio 15 2017 Win64------>>点Finish,开始configure
此时等待一段时间。。。
8.虽然底部显示Configuring done,但还有一堆红的,说明这些项目配置不成功,有时是因为网络连接的问题下载失败
将BUILD_opencv_world勾选上,原因是主要是把所有的lib文件都弄到一个opencv_world340d.lib中方便配置,若不勾选在最后会产生大概四五十个.lib文件,导致最后配置opencv到VS2017中添加附加依赖项太麻烦。
OPENCV_ERTRA_MOUDULES_PATH的路径为之前解压的opencv_contrib-3.4.0中的modules文件夹
至于WITH_CUDA 这一项有些人说勾选会导致后期配置大量失败,我自己并没遇到这种情况,有这张情况的可以选择不勾选。
其他项默认那些勾选项就好,不需要改动,
然后再次Configure。
如果还有红色项的话可以继续点Configure,有可能因为网络下载问题而失败,直到没有红色项。
9.等没有红色项时先别急着Generate,打开opencv\opencv-3.4.0\myBuild中的CMakeDownloadLog.txt文档,可以看到现在缺失ffmpeg、ippicv和xfeatures2d文件,虽然文档中给了我们下载该文件的链接,但是链接却点不进去。
并且我们可以打开D:\Opencv 3.4.0\opencv-3.4.0.cache文件夹
这些文件大小都是0KB,说明下载配置失败。
这里我将这些文件上传至百度云,有需要的可以下载
opencv3.4.0相关cmake配置文件
提取密码:wwc8
我们将ffmpeg的6个文件放入opencv-3.4.0.cache\ffmpeg文件夹中;
将0421e642bc7ad741a2236d3ec4190bdd-ippicv_2017u3_win_intel64_general_20170822.zip压缩包放入Opencv 3.4.0\opencv-3.4.0.cache\ippicv文件夹中;
将boostdesc和vgg两个文件夹放入Opencv 3.4.0\opencv-3.4.0.cache\xfeatures2d文件夹中。
将原本那些0KB的文件全部替换掉。
然后将opencv\opencv-3.4.0.cache中的ffmpeg文件夹复制,在opencv\opencv-3.4.0\myBuild\3rdparty中粘贴。
此时再次点CMake的Configure,等待Configuring done后再点Generate,然后Generating done。
10.打开opencv\opencv-3.4.0\myBuild中的OpenCV.sln
可以看到正在加载。。。。
加载完后 点击”视图“中的”解决方案资源管理器“
右键单击”解决方案‘OpenCV’(418个项目)—>>再点击“生成解决方案”,此时需要等待很久。。。。。
11.此时可以打开一首老鹰乐队的’Wasted Time’听听,个人认为非常好听的一首老歌
12.听完歌,也生成好了。
此时右键单击INSTALL–>>仅用于项目–>>仅生成
成功!!
13.接下来就和普通版配置环境变量一致了
此电脑–》》属性–》》–》》高级系统设置–》》–》》环境变量
–》》双击path
新建–》》将install\x64\vc15\bin的地址写入
14.打开VS2017
随便新建一个空项目,打开“视图”–》》“属性管理器”“–》》
右键Microsoft.Cpp.x64.user–》》属性
1).VC++目录–》》包含目录–》》编辑
填入:
D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\include
D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\include\opencv
D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\include\opencv2
这三个地址–》》确定
2).库目录–》》编辑
填入地址:D:\Opencv 3.4.0\opencv-3.4.0\myBuild\install\x64\vc15\lib
–》》确定
3).连接器–》》输入–》》附加依赖项–》》编辑
填入myBuild\install\x64\vc15\lib中这两个.lib文件的名称opencv_img_hash340d.lib
opencv_world340d.lib
再次点击确定–》》应用–》》确定。
15.右键单击Microsoft.Cpp.x64.user–》》保存
16.测试
#include
#include
using namespace std;
using namespace cv;
int num_corners = 25;
int max_corners = 500;
const char*output_title = "ShiTomas Detector";
void ShiTomas_Demo(int, void*);
Mat src, gray_src;
RNG rng(12345);
int main(int argc, char** argv) {
src = imread("H:\\OpenCV代码练习\\lena标准测试图像\\color\\Airplane.jpg");
if (src.empty()) {
printf("it not find.\n");
return -1;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
cvtColor(src, gray_src, COLOR_BGR2GRAY);
namedWindow(output_title, CV_WINDOW_AUTOSIZE);
createTrackbar("Num Corners:", output_title, &num_corners, max_corners, ShiTomas_Demo);
ShiTomas_Demo(0, 0);
waitKey(0);
return 1;
}
void ShiTomas_Demo(int, void*) {
if (num_corners < 5) {
num_corners = 5;
}
vector<Point2f>corners;
double qualityLevel = 0.01;
double minDistance = 10;
int blockSize = 3;
bool useHarris = false;
double k = 0.04;
Mat resultImg = gray_src.clone();//resultImg=gray_src的克隆
goodFeaturesToTrack(gray_src, corners, num_corners, qualityLevel, minDistance, Mat(), blockSize, useHarris, k);
printf("Number of Detected Corners:%d/n", corners.size());
for (size_t t = 0; t < corners.size(); t++) {
circle(resultImg, corners[t], 2, Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)), 2, 8, 0);
}
imshow(output_title, resultImg);
}
角点检测成功,配置没问题。