我想用动态库构建OpenCV 4.6.0,虽然我检查了BUILD_SHARED_LIBS:BOOL=1,但安装文件夹只包含
我预计会有很多 dll 文件,以便我可以将这些文件复制到 Unity 中,以便在 Unity 中使用 opencv_with_cuda。
这是我在 CMake 中的构建设置:
Commandline options:
-DCUDA_ARCH_BIN:STRING="6.1" -DCUDA_FAST_MATH:BOOL="1" -DOPENCV_EXTRA_MODULES_PATH:PATH="C:/opencv_version_4.6.0/opencv_contrib-4.6.0/modules" -DENABLE_FAST_MATH:BOOL="1" -DWITH_CUDA:BOOL="1" -DBUILD_SHARED_LIBS:BOOL="1" -DBUILD_opencv_world:BOOL="1" -DCMAKE_CONFIGURATION_TYPES:STRING="Release" -DOPENCV_DNN_CUDA:BOOL="1"
Cache file:
CUDA_ARCH_BIN:STRING=6.1
CUDA_FAST_MATH:BOOL=1
OPENCV_EXTRA_MODULES_PATH:PATH=C:/opencv_version_4.6.0/opencv_contrib-4.6.0/modules
ENABLE_FAST_MATH:BOOL=1
WITH_CUDA:BOOL=1
BUILD_SHARED_LIBS:BOOL=1
BUILD_opencv_world:BOOL=1
CMAKE_CONFIGURATION_TYPES:STRING=Release
OPENCV_DNN_CUDA:BOOL=1
除了Python2警告,我只遇到这个警告:
CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):
CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install
directory
Call Stack (most recent call first):
CMakeLists.txt:1039 (include)
整个配置就像t
General configuration for OpenCV 4.6.0 ===================================== Version control: unknown
Extra modules:
Location (extra): C:/opencv_version_4.6.0/opencv_contrib-4.6.0/modules
Version control (extra): unknown
Platform:
Timestamp: 2022-09-12T09:13:27Z
Host: Windows 10.0.19044 AMD64
CMake: 3.24.1
CMake generator: Visual Studio 16 2019
CMake build tool: C:/Program Files/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe
MSVC: 1929
Configuration: Release
CPU/HW features:
Baseline: SSE SSE2 SSE3
requested: SSE3
Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
SSE4_1 (18 files): + SSSE3 SSE4_1
SSE4_2 (2 files): + SSSE3 SSE4_1 POPCNT SSE4_2
FP16 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
AVX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
AVX2 (33 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
AVX512_SKX (8 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX
C/C++:
Built as dynamic libs?: YES
C++ standard: 11
C++ Compiler: C:/Program Files/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe (ver 19.29.30146.0)
C++ flags (Release): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP /MD /O2 /Ob2 /DNDEBUG
C++ flags (Debug): /DWIN32 /D_WINDOWS /W4 /GR /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /EHa /wd4127 /wd4251 /wd4324 /wd4275 /wd4512 /wd4589 /MP /MDd /Zi /Ob0 /Od /RTC1
C Compiler: C:/Program Files/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe
C flags (Release): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /MP /MD /O2 /Ob2 /DNDEBUG
C flags (Debug): /DWIN32 /D_WINDOWS /W3 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi /fp:fast /MP /MDd /Zi /Ob0 /Od /RTC1
Linker flags (Release): /machine:x64 /INCREMENTAL:NO
Linker flags (Debug): /machine:x64 /debug /INCREMENTAL
ccache: NO
Precompiled headers: NO
Extra dependencies: cudart_static.lib nppc.lib nppial.lib nppicc.lib nppidei.lib nppif.lib nppig.lib nppim.lib nppist.lib nppisu.lib nppitc.lib npps.lib cublas.lib cudnn.lib cufft.lib
-LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6/lib/x64
3rdparty dependencies:
OpenCV modules:
To be built: aruco barcode bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann fuzzy gapi hdf hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode world xfeatures2d ximgproc xobjdetect xphoto
Disabled: -
Disabled by dependency: -
Unavailable: alphamat cvv freetype java julia matlab ovis python2 python2 sfm viz
Applications: tests perf_tests apps
Documentation: NO
Non-free algorithms: NO
Windows RT support: NO
GUI:
Win32 UI: YES
VTK support: NO
Media I/O:
ZLib: build (ver 1.2.12)
JPEG: build-libjpeg-turbo (ver 2.1.2-62)
WEBP: build (ver encoder: 0x020f)
PNG: build (ver 1.6.37)
TIFF: build (ver 42 - 4.2.0)
JPEG 2000: build (ver 2.4.0)
OpenEXR: build (ver 2.3.0)
HDR: YES
SUNRASTER: YES
PXM: YES
PFM: YES
Video I/O:
DC1394: NO
FFMPEG: YES (prebuilt binaries)
avcodec: YES (58.134.100)
avformat: YES (58.76.100)
avutil: YES (56.70.100)
swscale: YES (5.9.100)
avresample: YES (4.0.0)
GStreamer: NO
DirectShow: YES
Media Foundation: YES
DXVA: YES
Parallel framework: Concurrency
Trace: YES (with Intel ITT)
Other third-party libraries:
Intel IPP: 2020.0.0 Gold [2020.0.0]
at: C:/opencv_version_4.6.0/build/3rdparty/ippicv/ippicv_win/icv
Intel IPP IW: sources (2020.0.0)
at: C:/opencv_version_4.6.0/build/3rdparty/ippicv/ippicv_win/iw
Lapack: NO
Eigen: NO
Custom HAL: NO
Protobuf: build (3.19.1)
NVIDIA CUDA: YES (ver 11.6, CUFFT CUBLAS FAST_MATH)
NVIDIA GPU arch: 61
NVIDIA PTX archs:
cuDNN: YES (ver 8.4.1)
OpenCL: YES (NVD3D11)
Include path: C:/opencv_version_4.6.0/opencv-4.6.0/3rdparty/include/opencl/1.2
Link libraries: Dynamic load
Python 3:
Interpreter: C:/Users/turtl/anaconda3/python.exe (ver 3.9.12)
Libraries: C:/Users/turtl/anaconda3/libs/python39.lib (ver 3.9.12)
numpy: C:/Users/turtl/anaconda3/lib/site-packages/numpy/core/include (ver
1.21.5)
install path: C:/Users/turtl/anaconda3/Lib/site-packages/cv2/python-3.9
Python (for build): C:/Users/turtl/anaconda3/python.exe
Java:
ant: NO
JNI: NO
Java wrappers: NO
Java tests: NO
Install to: C:/opencv_version_4.6.0/build/install
需要注意的是,构建时没有报错,但是经常出现这个警告,不知道是否与没有构建动态库有关 警告:没有 DLL 接口的类类型字段在具有 DLL 接口的类中使用。
已经有一段时间了,但我遇到了同样的问题。经过多次战斗,我成功地编译了所有 GPU 架构的库,并在一些 GPU 上测试它们后,在公共存储库(DLL 存储库)中共享它们:
我留给未来需要它们的开发人员。