安装环境:Win10(ver1903)+ VS2017(ver15.0)+ OPENCV(ver4.3.0)
0.ViSP官方教程文档:https://visp-doc.inria.fr/doxygen/visp-daily/index.html 选择从源代码安装: Tutorials for ViSP users-> Installation from source-> Tutorial: Installation from source for Windows with Visual C++ 2017 (vc15)
1.VS2017社区版 https://www.visualstudio.com/downloads/ 注意: 工作负荷:使用C ++进行桌面开发,使用.net进行桌面开发。 组件:除建议外,Windows 10 SDK全选。
2.CMake https://cmake.org/download/ 选最新版本的cmake-X.XX.X-win64-x64.msi
3.GIT https://git-for-windows.github.io/ 选最新版本 若github无法直连,可以科学上网或者利用手机开4G热点 Git-X.XX.X-64-bit
4.opencv http://opencv.org/releases.html 这里选用4.3.0,点击windows图标下载。
直接利用官方文档里面的命令行去做。
步骤如下。
1.快捷键win+r,输入cmd,并运行。(进入dos命令行)
输入如下命令并点击回车
setx VISP_WS "C:\visp-ws" exit2.再次进入cmd,输入如下命令并回车。
mkdir %VISP_WS% exit3.再次进入cmd,输入如下命令并回车
cd %VISP_WS% git clone https://github.com/lagadic/visp.git (输入之后等待下载完毕再输入下一条) cmake -G "Visual Studio 15 2017" -A "x64" %VISP_WS%\visp cmake --build . --config Release --target install(同上)
setx Path "%Path%:%VISP_WS%\visp-build-vc15\install\x64\vc15\bin" exit此处可能设置不成功,见后面常见问题部分。
4.再次进入cmd,输入如下命令并回车
setx VISP_DIR "%VISP_WS%\visp-build-vc15\install" exit5.安装opencv。
将文件夹改名为opencv-4.3.0 再次进入cmd,输入如下命令并回车
setx OpenCV_DIR "%VISP_WS%\opencv-4.3.0\build" exit然后修改环境变量。我的电脑->右键->属性->高级系统设置->环境变量->path 添加一条C:\visp-ws\opencv-4.3.0\build\x64\vc15\bin
再次进入cmd,输入如下命令并回车
cd %VISP_WS% cmake -G "Visual Studio 15 2017" -A "x64" %VISP_WS%\visp cmake --build . --config Release --target install6.测试代码
准备文件。
打开教程网页。 Tutorials for ViSP users-> Getting started-> Tutorial: How to create and build a project that uses ViSP and CMake on Unix or Windows
翻到Advanced getting started。
在任意位置新建一个文件夹。打开之后,打开vs2017新建一个.cpp文件,复制网页中的Get tutorial-viewer.cpp file的代码,并保存为tutorial-viewer.cpp。
#include <visp3/gui/vpDisplayD3D.h> #include <visp3/gui/vpDisplayGDI.h> #include <visp3/gui/vpDisplayGTK.h> #include <visp3/gui/vpDisplayOpenCV.h> #include <visp3/gui/vpDisplayX.h> #include <visp3/io/vpImageIo.h> int main(int argc, char **argv) { if (argc != 2) { printf("Usage: %s <image name.[pgm,ppm,jpeg,png,tiff,bmp,ras,jp2]>\n", argv[0]); return -1; } vpImage<vpRGBa> I; try { vpImageIo::read(I, argv[1]); } catch (...) { std::cout << "Cannot read image \"" << argv[1] << "\"" << std::endl; return -1; } try { #if defined(VISP_HAVE_X11) vpDisplayX d(I, vpDisplay::SCALE_AUTO); #elif defined(VISP_HAVE_GDI) vpDisplayGDI d(I, vpDisplay::SCALE_AUTO); #elif defined(VISP_HAVE_OPENCV) vpDisplayOpenCV d(I, vpDisplay::SCALE_AUTO); #elif defined(VISP_HAVE_GTK) vpDisplayGTK d(I, vpDisplay::SCALE_AUTO); #elif defined(VISP_HAVE_D3D9) vpDisplayD3D d(I, vpDisplay::SCALE_AUTO); #else std::cout << "No image viewer is available..." << std::endl; #endif vpDisplay::setTitle(I, "My image"); vpDisplay::display(I); vpDisplay::flush(I); std::cout << "A click to quit..." << std::endl; vpDisplay::getClick(I); } catch (const vpException &e) { std::cout << "Catch an exception: " << e << std::endl; } }新建一个txt文档,命名为CMakeLists.txt,打开文档复制下面的内容进去并保存。
project(tutorial-image) cmake_minimum_required(VERSION 2.8) find_package(VISP REQUIRED) include_directories(${VISP_INCLUDE_DIRS}) add_executable(tutorial-viewer tutorial-viewer.cpp) target_link_libraries(tutorial-viewer ${VISP_LIBRARIES})打开cmd命令行,输入如下命令
C:\> xcopy /E /I %VISP_WS%\visp\tutorial\image %VISP_WS%\image然后在C:\visp-ws\image中找到monkey.ppm复制粘贴到自己新建的文件夹。 这样自己新建的文件夹里就有tutorial-viewer.cpp和CMakeLists.txt以及monkey.ppm三个文件 Cmake进行编译。
上边是自己新建文件夹的位置。下面,在自己的文件夹新建一个build文件夹。
注意选择VS2017和x64.点击finish 之后点击configure。出现红线后再点击configure。最后点击generate。 此时build文件夹已经生成.SLN文件。打开进入VS2017. 选择release以及x64,然后设置.CPP文件为启动项 之后选择选项卡:生成-生成tutorial-viewer。该文件位于build文件夹的release文件夹中。同时把monkey.ppm这个图片文件复制到该文件夹内。 将monkey.ppm拖到tutorial-viewer.exe上,测试程序。 结果如图。
1.第二部分里的步骤3: Git clone指令处:由于部分网络运营商无法直连github,可能造成无法下载。 可以选择切换4G等可以直连github的网络条件。也可以科学上网。 但需要注意:ssr等代理工具可能占用443端口,需要在git中设置一下使用全局代理。Git指令如下。 设置代理:
git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'socks5://127.0.0.1:1080'查看代理:
git config --global --get http.proxy git config --global --get https.proxy取消代理:
git config --global --unset http.proxy git config --global --unset https.proxysetx Path "%Path%:%VISP_WS%…处:
此处由于cmd只能处理短字节指令,因此此处可能设置不成功,需要手动设置环境变量。 我的电脑->右键->属性->高级系统设置->环境变量->path 添加一条C:\visp-ws\visp-build-vc15\install\x64\vc15\bin
测试示例代码时: 如果测试的是Quick getting started或者Advanced getting started,可能会因为ViSP自带的显示程序(即所谓的vsDisplayGDI这个API)和系统提供的win10 sdk不兼容造成程序闪退,此时的解决办法是采用第三方库opencv的GDI。(在ViSP的开发者论坛里,维护小组的建议也是如此)。这也就是这个教程为什么讲到了OPENCV第三方库的安装,就是为了调用vpDisplayOpenCV这个API去代替ViSP的原生显示程序。 解决办法:在Advanced getting started的Get tutorial-viewer.cpp代码中做如下修改: 删去该行
#elif defined(VISP_HAVE_GDI) vpDisplayGDI d(I, vpDisplay::SCALE_AUTO);此时
#elif defined(VISP_HAVE_OPENCV)这一行应该被识别,从而变成彩色。 然后重新对项目进行编译即可。
