1. 怎样编译 openCV
如果要使用opencv开发,必须下载源代码然后编译
在opencv 目录下创建 build 文件夹然后执行cmake command
Set up the OpenCV build with CMake:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
-D 是变量的定义,控制了编译的模块等,上面的 .. 表示上级目录也指明了 cmake file在opencv 目录下的CMakeLists.txt,
执行cmake后输出log是:
-- OpenCV modules:
-- To be built: aruco barcode bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform java line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python2 python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
-- Disabled: world
-- Disabled by dependency: -
-- Unavailable: alphamat cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv hdf julia matlab ovis sfm viz
-- Applications: tests perf_tests examples apps
-- Documentation: NO
-- Non-free algorithms: NO
怎样控制编译的 modules:
1. cmake -D
如 BUILD_opencv_ml = OFF, 可以通过cmake的输入log: To be built:看是否有mk
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.4 \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/zfb/opencv_contrib-4.4.0/modules \
-D OPENCV_GENERATE_PKGCONFIG=YES \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D WITH_CUDA=ON \
-D BUILD_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON ..
💡 Building OpenCV takes time, anywhere between 5 minutes and +60 minutes depending on your configuration, the selected OpenCV modules and options, …; so it’s a good idea to first do a minimal build to check that eveything is OK.
To reduce the build time, disable the following entries:
-
BUILD_IPP_IW
-
BUILD_ITT
-
BUILD_OPENEXR
-
BUILD_PERF_TESTS
-
BUILD_TESTS
-
BUILD_TIFF
-
BUILD_WEBP
-
BUILD_opencv_calib3d
-
BUILD_opencv_dnn
-
BUILD_opencv_features2d
-
BUILD_opencv_flann
-
BUILD_opencv_gapi
-
BUILD_opencv_highgui
-
BUILD_opencv_ml
-
BUILD_opencv_objdetect
-
BUILD_opencv_photo
-
BUILD_opencv_python_bindings_generator
-
BUILD_opencv_python_tests
-
BUILD_opencv_stitching
-
BUILD_opencv_ts
-
BUILD_opencv_video
-
BUILD_opencv_videoio
-
VIDEOIO_ENABLE_PLUGINS
-
VIDEOIO_ENABLE_STRICT_PLUGIN_CHECK
The following OpenCV modules are the bare minimum to use OpenCV from Java.
-
BUILD_opencv_core
-
BUILD_opencv_imgcodecs
-
BUILD_opencv_imgproc
-
BUILD_JAVA
-
BUILD_opencv_java
-
BUILD_opencv_java_bindings_gen
2. 直接更改cmakefile中的 To be built 变量
1154 # ==== OpenCV modules ==========================
1171 status(" To be built:" OPENCV_MODULES_BUILD THEN ${OPENCV_MODULES_BUILD_ST} ELSE "-")
1172 status(" Disabled:" OPENCV_MODULES_DISABLED_USER THEN ${OPENCV_MODULES_DISABLED_USER_ST} ELSE "-")
1173 status(" Disabled by dependency:" OPENCV_MODULES_DISABLED_AUTO THEN ${OPENCV_MODULES_DISABLED_AUTO_ST} ELSE "-")
1174 status(" Unavailable:" OPENCV_MODULES_DISABLED_FORCE THEN ${