vs2017+win10-64位+opencv3.4.1+opencv_contrib3.4.1+ freeglut3.0.0+cmake3.13.2 配置教程

vs2017+win10-64位+opencv3.4.1+opencv_contrib3.4.1+ freeglut3.0.0+cmake3.13.2的配置

配置的目的:
本人学习增强现实,需要用到OpenCV和OpenGL。
因为open3.4.1的一些特征检测算法都放在opencv_contrib3.4.1中,因此需要将opencv_contrib3.4.1编译到opencv3.4.1中。因为要在vs2017+win64中使用OpenGL,所以要配置freeglut3.0.0。
本配置主要实现了在win10-64位的vs2017中配置opencv3.4.1、opencv_contrib3.4.1和 freeglut3.0.0,同时实现了OpenCV支持OpenGL。

参考了几篇博客:
https://blog.csdn.net/ezhchai/article/details/80557936
https://blog.csdn.net/u010248552/article/details/80416751
https://www.cnblogs.com/feifanrensheng/p/9178711.html
https://blog.csdn.net/tpz789/article/details/88073233

配置环境:
操作环境:win10 64位
Visual Studio 2017;
opencv3.4.1
opencv_contrib3.4.1
freeglut3.0.0
cmake3.13.2

其中freeglut3.0.0、cmake3.13.2、opencv_contrib3.4.1、Visual Studio 2017这几款软件本人已上传,下载地址:https://download.csdn.net/download/tpz789/11126500

为方便描述,本人电脑上的软件安装地址如下:
open3.4.1 的安装目录: D:\opencv
opencv_contrib-3.4.1放置在 H:\software\14-opencv\opencv_contrib-3.4.1

安装流程:

一、软件安装
(1)VS下载安装
下载Visual Studio Windows版 Community 2017
网址:https://www.microsoft.com/zh-cn/
在这里插入图片描述
在这里插入图片描述

只需勾选使用C++的桌面开发,直至安装完成。我的安装位置是C:\Program Files (x86)\Microsoft Visual Studio
在这里插入图片描述
(2)OpenCV3.4.1 安装与配置
下载地址:https://opencv.org/
下载3.4.1 Win pack
在这里插入图片描述
在这里插入图片描述
安装:我的安装位置是D:\opencv

(3)CMake下载与安装
下载地址:https://cmake.org/download/
我下载的是 cmake-3.13.2-win64-x64
下载完成之后便是安装CMake,这一步很简单,在此不再赘言。

二、freeglut3.0.0 安装与配置
目的是在VS2017 Debug和Release x64 的配置环境下使用opengl。
下载freeglut3.0.0压缩包并解压;
(1)利用Cmake编译FreeGLUT,打开CMake;
where is the source code选择解压FreeGLUT后的目录。
例如我的是H:\software\17-freeglut\freeglut-3.0.0,注意不要选择为H:\software\17-freeglut\freeglut-3.0.0\src。
where to build the binaries:是即将生成的文件存放的路径,建议单独建一个文件夹存放。 例如我的是:H:\software\17-freeglut\freeglut-3.0.0_new
选择完毕后显示如下:
在这里插入图片描述
点击:Configure,Configure如下配置
在这里插入图片描述
点击FInish等待配置完成,如果还有红色选项,再点击configure,直到全白,然后点击Genreate。

(2)打开CMake生成目标的文件夹,找到:freeglut.sln,默认使用VS2017打开。
在这里插入图片描述

此时分别选择Debug和Release x64 模式生成解决方案。
最后显示成功26个。
(3)配置FreeGLUT
这里以我的机器为例,记录配置FreeGLUT的过程。
①将 H:\software\17-freeglut\freeglut-3.0.0\include目录下的GL文件夹copy到VS2017的安装目录下的VC文件的include目录,例如我的是C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include
②打开CMake生成目标文件夹的bin\Release\freeglut.dll和bin\Debug\freeglutd.dll移动到拷贝至C:\Windows\system32与‪C:\Windows\SysWOW64根目录下。
③打开CMake生成目标文件夹lib\Release\freeglut.lib、freeglut_static.lib和lib\Debug\freeglutd.lib、freeglut_staticd.lib并移动到C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64目录下。
至此,freeglut3.0.0配置完成。
(4).测试
建立空C++项目后,测试简单的Demo
#include <GL\freeglut.h>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}

int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow(“第一个OpenGL程序”);
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
调试模式分别选择Debug|x64和Release|x64,调试结果:
在这里插入图片描述
编译时如果出现下面的截图错误,则双击错误跳转到gl.h文件,在上面添加#include<Windows.h>
在这里插入图片描述
至此,VS2017 + OpenCV3.4.1 + freeglut3.0.0 配置教完成。

三、配置opencv3.4.1和opencv_contrib3.4.1,同时生成支持OpenGL的OpenCV

本人电脑上opencv3.4.1我的安装位置是D:\opencv,
opencv_contrib-3.4.1放置在 H:\software\14-opencv\opencv_contrib-3.4.1
1、cmake_gui编译
第一步:打开cmake
Where is the source code: D:/opencv/sources
Where to build the binaries: D:\opencv3.4.1-contrib3.4.1-opengl
在这里插入图片描述
第二步:
点击Configure,这时会弹出一个对话框,让你设置生成器,选择Visual Studio 15 2017 Win64。
在这里插入图片描述
点击Finish,第一次Configuring done后,会出现很多红色选项,如下图:
在这里插入图片描述
这时候进行如下操作:此步骤非常重要。
①勾选 OPENCV_ENABLE_NONFREE ;
②勾选 BUILD_opencv_world选项,这样,在调用dll时,只调用这一个就行了,不用根据功能选择了,省了些麻烦。
③在OPENCV_EXTRA_MODULES_PATH选项中,填写opencv_contrib解压目录下,modules文件夹的路径,这样就把opencv_contrib编译进去了。本例:H:\software\14-opencv\opencv_contrib-3.4.1\modules
④WITH_OPENGL=YES (实现生成支持OpenGL的OpenCV)

然后再按Configure进行配置,如果还有红色,继续点击Configure,直到全白。然后按Generate按键,生成vs工程文件。

第三步:用VS2017编译opencv源代码
生成工程完毕,在刚才CMake的“目的路径”下,可以看到OpenCV工程文件:
在这里插入图片描述
用vs2017打开工程文件,选择Debug x64,点击生成->生成解决方案开始编译,这个过程比较漫长,需要耐心,结果如下:
在这里插入图片描述
生成,成功84个,失败0个,最新0个,跳过9个。
没有错误,然后右击INSTALL,点击“仅用于项目->仅生成INSTALL”
在这里插入图片描述
即可编译生成dll相关文件,编译结果如下。
在这里插入图片描述
注意:记得生成完debug的库后,改为release,x64,再来一遍上面的操作。
此时,在D:\opencv3.4.1-contrib3.4.1-opengl\install目录中包含了我们需要的头文件、库文件。
在这里插入图片描述

第4步:系统环境配置
①在系统变量的path里加入bin的路径:
D:\opencv3.4.1-contrib3.4.1-opengl\install\x64\vc15\bin
(注意,如果之前配置过opencv的bin路径,需要将其删掉,否则可能以后程序会出错)
②vs2017新建工程,打开属性管理器,Debug|x64 右击,选择添加新项目属性表,假设取名opencv3.4.1_contrib3.4.1_opengl_Debugx64,然后双击打开。
在这里插入图片描述
点击VC++目录:
包含目录,编辑,添加
D:\opencv3.4.1-contrib3.4.1-opengl\install\include
D:\opencv3.4.1-contrib3.4.1-opengl\install\include\opencv
D:\opencv3.4.1-contrib3.4.1-opengl\install\include\opencv2
库目录,编辑,添加
D:\opencv3.4.1-contrib3.4.1-opengl\install\x64\vc15\lib
在这里插入图片描述
点击链接器,输入,附近依赖项,添加D:\opencv3.4.1-contrib3.4.1-opengl\install\x64\vc15\lib中的:(注意:后面带d)
opencv_img_hash341d.lib
opencv_world341d.lib
在这里插入图片描述
设置完成后,点击确定,然后右击保存该属性表,以后项目可以直接添加使用,省的每次配置了。

这样就添加了一个新项目属性表,保存后在以后的新建项目中只需添加现有属性表就完成配置了。
Release|x64的属性表类似,不同之处是 链接器输入附近依赖项时,添加D:\opencv3.4.1-contrib3.4.1-opengl\install\x64\vc15\lib中的opencv_img_hash341.lib和opencv_world341.lib (后面不带d)。
③ 文件配置
在C:\Windows\System32和C:\Windows\SysWOW64下将之前配置的opencv3.4.1的.dll文件,包括opencv_ffmpeg341_64.dll、opencv_world341.dll、opencv_world341d.dll共3个,全部删除掉。
然后将D:\opencv3.4.1-contrib3.4.1-opengl\install\x64\vc15\bin中的5个.dll文件,opencv_world341d.dll、opencv_world341.dll、opencv_img_hash341d.dll、opencv_img_hash341.dll、opencv_ffmpeg341_64.dll
分别复制到C:\Windows\System32和C:\Windows\SysWOW64下。
至此,Opencv3.4.1 配置完毕。

4、案例验证:
①测试opencv_contrib3.4.1是否配置成功
图片:house.jpg,放在项目文件中。
在这里插入图片描述

测试代码如下:
#include “opencv2/opencv.hpp”
#include"opencv2/xfeatures2d.hpp"
using namespace cv;
using namespace std;

int main(){
Mat img = imread(“house.jpg”, CV_LOAD_IMAGE_COLOR);
Ptr sift = xfeatures2d::SIFT::create();
vector keypoints;
Mat descriptors;

sift->detectAndCompute(img, noArray(), keypoints, descriptors);
drawKeypoints(img, keypoints, descriptors, Scalar(0, 255, 255));
imshow("Result", descriptors);
waitKey(0);
return 0; 

}
注意将配置选为Debug|x64;属性管理器中将opencv3.4.1_contrib3.4.1_opengl_Debugx64.props添加进来。
在这里插入图片描述
F5调试,结果如下:
在这里插入图片描述
说明opencv_contrib3.4.1配置成功。

②测试OpenCV是否支持OpenGL
代码如下:( 参考博客:https://www.cnblogs.com/feifanrensheng/p/9178711.html )
#include <GL\freeglut.h>
#include “opencv2/opencv.hpp”
using namespace cv;
using namespace std;

void on_opengl(void* param)
{
glLoadIdentity();
glTranslated(0.0, 0.0, -1.0);
glRotatef(55, 1, 0, 0);
glRotatef(45, 0, 1, 0);
glRotatef(0, 0, 0, 1);
static const int coords[6][4][3] = {
{ { +1, -1, -1 }, { -1, -1, -1 }, { -1, +1, -1 }, { +1, +1, -1 } },
{ { +1, +1, -1 }, { -1, +1, -1 }, { -1, +1, +1 }, { +1, +1, +1 } },
{ { +1, -1, +1 }, { +1, -1, -1 }, { +1, +1, -1 }, { +1, +1, +1 } },
{ { -1, -1, -1 }, { -1, -1, +1 }, { -1, +1, +1 }, { -1, +1, -1 } },
{ { +1, -1, +1 }, { -1, -1, +1 }, { -1, -1, -1 }, { +1, -1, -1 } },
{ { -1, -1, +1 }, { +1, -1, +1 }, { +1, +1, +1 }, { -1, +1, +1 } }
};
for (int i = 0; i < 6; ++i) {
glColor3ub(i * 20, 100 + i * 10, i * 42);
glBegin(GL_QUADS);
for (int j = 0; j < 4; ++j) {
glVertex3d(0.2 * coords[i][j][0], 0.2 * coords[i][j][1], 0.2 * coords[i][j][2]);
}
glEnd();
}
}
int main() {
string openGLWindowName = “OpenGL Test”;
cv::namedWindow(openGLWindowName, WINDOW_OPENGL);//如果OpenCV不支持OpenGL,此函数会出错。
resizeWindow(openGLWindowName, 640, 480);
setOpenGlContext(openGLWindowName);
setOpenGlDrawCallback(openGLWindowName, on_opengl, NULL);
waitKey(0);
return 0;
}
F5调试,结果如下:
在这里插入图片描述
至此,说明OpenCV是否支持OpenGL。

编译时如果出现下面的截图错误,则双击错误跳转到gl.h文件,在上面添加#include<Windows.h>,如下图所示:
在这里插入图片描述
至此,所有配置完成。
本人研究方向是增强现实,有相同方向的朋友欢迎加微信 tpz789 交流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值