【问题标题】:OpenCV 3.2 for python with CUDA in WindowsOpenCV 3.2 for python 与 Windows 中的 CUDA
【发布时间】:2017-06-10 12:10:41
【问题描述】:

我使用cmake 构建opencv3.2,并使用CUDA 支持和python3.5 构建Visual Studio 12 (2013)。所有库都已成功构建,我可以使用python 运行opencv 命令。

这是命令print(cv2.getBuildInformation())的输出

General configuration for OpenCV 3.2.0 =====================================
  Version control:               unknown

  Extra modules:
    Location (extra):            D:/OpenCV/opencv_contrib/modules
    Version control (extra):     unknown

  Platform:
    Timestamp:                   2017-06-09T14:07:41Z
    Host:                        Windows 10.0.14393 AMD64
    CMake:                       3.9.0-rc2
    CMake generator:             Visual Studio 12 2013 Win64
    CMake build tool:            C:/Program Files (x86)/MSBuild/12.0/bin/MSBuild.exe
    MSVC:                        1800

  C/C++:
    Built as dynamic libs?:      YES
    C++ Compiler:                D:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/x86_amd64/cl.exe  (ver 18.0.21005.1)
    C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:AVX2 /Oi  /wd4127 /wd4251 /wd4324 /wd4275 /wd4589 /MP4  /MD /O2 /Ob2 /DNDEBUG  /Zi
    C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:AVX2 /Oi  /wd4127 /wd4251 /wd4324 /wd4275 /wd4589 /MP4  /MDd /Zi /Ob0 /Od /RTC1
    C Compiler:                  D:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/x86_amd64/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 /arch:AVX2 /Oi    /MP4  /MD /O2 /Ob2 /DNDEBUG  /Zi
    C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /arch:AVX2 /Oi    /MP4  /MDd /Zi /Ob0 /Od /RTC1
    Linker flags (Release):      /machine:x64  /INCREMENTAL:NO  /debug
    Linker flags (Debug):        /machine:x64  /debug /INCREMENTAL
    ccache:                      NO
    Precompiled headers:         YES
    Extra dependencies:          comctl32 gdi32 ole32 setupapi ws2_32 vfw32 C:/Users/Ramesh/Anaconda3/Library/lib/hdf5.lib cudart nppc nppi npps cublas cufft -LIBPATH:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/lib/x64
    3rdparty dependencies:       zlib libjpeg libwebp libpng libtiff libjasper IlmImf libprotobuf

  OpenCV modules:
    To be built:                 cudev core cudaarithm flann hdf imgproc ml reg surface_matching video cudabgsegm cudafilters cudaimgproc cudawarping dnn fuzzy imgcodecs photo shape videoio cudacodec highgui objdetect plot ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib cudafeatures2d cudalegacy cudaobjdetect cudaoptflow cudastereo datasets rgbd stereo superres tracking videostab xfeatures2d ximgproc aruco optflow phase_unwrapping stitching structured_light python3
    Disabled:                    world contrib_world
    Disabled by dependency:      -
    Unavailable:                 java python2 viz cnn_3dobj cvv freetype matlab sfm

  Windows RT support:            NO

  GUI:
    QT:                          NO
    Win32 UI:                    YES
    OpenGL support:              NO
    VTK support:                 NO

  Media I/O:
    ZLib:                        build (ver 1.2.8)
    JPEG:                        build (ver 90)
    WEBP:                        build (ver 0.3.1)
    PNG:                         build (ver 1.6.24)
    TIFF:                        build (ver 42 - 4.0.2)
    JPEG 2000:                   build (ver 1.900.1)
    OpenEXR:                     build (ver 1.7.1)
    GDAL:                        NO
    GDCM:                        NO

  Video I/O:
    Video for Windows:           YES
    DC1394 1.x:                  NO
    DC1394 2.x:                  NO
    FFMPEG:                      YES (prebuilt binaries)
      avcodec:                   YES (ver 57.64.101)
      avformat:                  YES (ver 57.56.100)
      avutil:                    YES (ver 55.34.100)
      swscale:                   YES (ver 4.2.100)
      avresample:                YES (ver 3.1.0)
    GStreamer:                   NO
    OpenNI:                      NO
    OpenNI PrimeSensor Modules:  NO
    OpenNI2:                     NO
    PvAPI:                       NO
    GigEVisionSDK:               NO
    DirectShow:                  YES
    Media Foundation:            NO
    XIMEA:                       NO
    Intel PerC:                  NO

  Parallel framework:            Concurrency

  Other third-party libraries:
    Use IPP:                     9.0.1 [9.0.1]
         at:                     D:/OpenCV/build2/3rdparty/ippicv/ippicv_win
    Use IPP Async:               NO
    Use Lapack:                  NO
    Use Eigen:                   YES (ver 3.3.3)
    Use Cuda:                    YES (ver 8.0)
    Use OpenCL:                  YES
    Use OpenVX:                  NO
    Use custom HAL:              NO

  NVIDIA CUDA
    Use CUFFT:                   YES
    Use CUBLAS:                  YES
    USE NVCUVID:                 NO
    NVIDIA GPU arch:             20 30 35 37 50 52 60 61
    NVIDIA PTX archs:
    Use fast math:               YES

  OpenCL:                        <Dynamic loading of OpenCL library>
    Include path:                D:/OpenCV/sources/3rdparty/include/opencl/1.2
    Use AMDFFT:                  NO
    Use AMDBLAS:                 NO

  Python 2:
    Interpreter:                 NO

  Python 3:
    Interpreter:                 C:/Users/Ramesh/Anaconda3/python.exe (ver 3.5.3)
    Libraries:                   C:/Users/Ramesh/Anaconda3/libs/python35.lib (ver 3.5.3)
    numpy:                       C:/Users/Ramesh/Anaconda3/lib/site-packages/numpy/core/include (ver 1.13.0)
    packages path:               C:/Users/Ramesh/Anaconda3/Lib/site-packages

  Python (for build):            C:/Users/Ramesh/Anaconda3/python.exe

  Java:
    ant:                         NO
    JNI:                         C:/Program Files/Java/jdk1.8.0_112/include C:/Program Files/Java/jdk1.8.0_112/include/win32 C:/Program Files/Java/jdk1.8.0_112/include
    Java wrappers:               NO
    Java tests:                  NO

  Matlab:                        Matlab not found or implicitly disabled

  Documentation:
    Doxygen:                     D:/Program Files/doxygen/bin/doxygen.exe (ver 1.8.13)

  Tests and samples:
    Tests:                       NO
    Performance tests:           NO
    C/C++ Examples:              NO

  Install path:                  D:/OpenCV/build2/install

  cvconfig.h is in:              D:/OpenCV/build2
-----------------------------------------------------------------



但是我不能使用cv2.cuda 包中的函数。当我运行help(cv2.cuda)

Help on module cv2.cuda in cv2:

NAME
    cv2.cuda

DATA
    SURF_CUDA_ANGLE_ROW = 5
    SURF_CUDA_HESSIAN_ROW = 6
    SURF_CUDA_LAPLACIAN_ROW = 2
    SURF_CUDA_OCTAVE_ROW = 3
    SURF_CUDA_ROWS_COUNT = 7
    SURF_CUDA_SIZE_ROW = 4
    SURF_CUDA_X_ROW = 0
    SURF_CUDA_Y_ROW = 1

FILE
    (built-in)

结果说模块cv2.cuda中没有函数


我的问题是,

  1. 有没有办法编译opencv3.2CUDA 支持python3.5..?如this 问题所述,在opencv 2.4.7 中是不可能的
  2. 如果没有办法,我可以将c++函数与python..绑定吗?我浏览了opencv doc,但我无法理解如何将新模块扩展到 python。当我用谷歌搜索它时,我得到了一些关于编写包装器的答案(所有答案都超过 4 年),但我不明白如何在c++ Matnumpy.ndarray 等两种语言之间绑定数据结构。

任何帮助将不胜感激!

【问题讨论】:

    标签: c++ python-3.x opencv wrapper


    【解决方案1】:

    按照here 中的教程,我能够找到一种方法来获得cudaOpenCV python 的支持(我没有测试过)。据我所知GPUMat 不可用。但是UMat可用于python,可用于访问OpenCL
    this 回答中所述,UMat

    一个统一的抽象 cv::UMat 允许使用 CPU 或 OpenCL 代码实现相同的 API,而无需显式调用 OpenCL 加速版本。如果系统中存在这些函数,则使用支持 OpenCL 的 GPU,否则自动切换到 CPU 操作。

    OpenCL 部分here 中所述,您只需将正常矩阵(在python np.ndarrays 中)更改为UMats(在python cv2.UMat 中)即可获得@987654337 @支持。

    但是当我需要cuda 支持时我会做的是,我将这部分写为c++ 中的一个函数,并带有cuda 支持。我使该函数以cv::Mat 图像作为参数并返回cv::Mat 作为结果。

    然后按照here 的描述为该函数编写一个python 包装器。
    这是一个有点旧的代码。但它在python 3.5python 2.7OpenCV 3.4 上对我有用

    【讨论】:

      猜你喜欢
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多