OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,旨在提供一个跨平台的、易于使用的、快速执行的计算机视觉接口。如果只是简单的使用,其实不必要像笔者这样使用源代码进行构建,直接使用官方提供的二进制安装包即可。一般来说,需要从源代码进行构建的原因有以下几种:
笔者构建的是OpenCV的3.4.16版本,这也是OpenCV3.X的最新版本,关键构建指令如下所示:
# 配置阶段,指定生成器、平台和安装路径
cmake .. -G "$Generator" -A x64 `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_PREFIX_PATH="$env:GISBasic" `
-DCMAKE_INSTALL_PREFIX="$InstallDir" `
-DBUILD_opencv_world=ON `
-DWITH_GDAL=OFF `
-DWITH_FFMPEG=OFF `
-DWITH_IPP=OFF `
-DBUILD_TESTS=OFF `
-DBUILD_PERF_TESTS=OFF `
-DBUILD_opencv_python_tests=OFF `
-DBUILD_opencv_python_bindings_generator=OFF `
-DBUILD_JAVA=OFF `
-DBUILD_opencv_java=OFF `
-DBUILD_opencv_java_bindings_generator=OFF `
#-DBUILD_ZLIB=OFF `
#-DBUILD_JPEG=OFF `
#-DBUILD_PNG=OFF `
#-DBUILD_TIFF=OFF `
#-DWITH_PROTOBUF=ON `
#-DBUILD_PROTOBUF=ON `
#-DPROTOBUF_UPDATE_FILES=OFF `
# 构建阶段,指定构建类型
cmake --build . --config Release
# 安装阶段,指定构建类型和安装目标
cmake --build . --config Release --target installOpenCV具有大量的构建选项,读者可以按需进行构建:
-DBUILD_opencv_world=ON表示将OpenCV的所有模块合并成一个名为opencv_world3416的库。-DWITH_GDAL=OFF、-DWITH_FFMPEG=OFF、-DWITH_IPP=OFF像GDAL、FFMPEG这样的都是非常大型的库,如果暂时用不到功能的话就先不用参与构建了。BUILD_ZLIB=OFF这样设置,构建OpenCV的时候就会使用已经构建好的库,而不是从OpenCV内部提供的代码重新构建。不过问题在于OpenCV还依赖于protobuf,谷歌的库是另外一套风格,构建出来问题多多,读者就不用尝试了,还是都从OpenCV内部提供的代码重新构建的好。