【问题标题】:How to compile OpenCV with OpenMP如何使用 OpenMP 编译 OpenCV
【发布时间】:2015-06-12 05:19:33
【问题描述】:

this SOF post 中的用户建议使用 WITH_OPENMP 标志构建 OpenCV 以启用(某些)多核支持。我尝试使用 OpenMP 构建 OpenCV-2.4.10,但无法在 Python 中导入 cv2。

注意:我能够在 Python 中构建和使用 OpenCV-2.4.10。问题在于使用WITH_OPENMP 标志构建。

按照this 博文中的建议,我将opencv-2.4.10/cmake/OpenCVFindLibsPerf.cmake 中的第49-58 行替换为以下内容:

# --- OpenMP ---
if(NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
  include (FindOpenMP)      # --- since cmake version 2.6.3 
   if (OPENMP_FOUND)
      set (HAVE_OPENMP TRUE)
      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
      set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
   else()
      set ( HAVE_OPENMP FALSE)
   endif()
else()
set(HAVE_OPENMP 0)
endif()

然后在构建之前执行这个命令:

    cmake -D WITH_OPENMP=ON -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON \
    -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON  \
    -D BUILD_EXAMPLES=ON ..

WITH_OPENMP=ON 是在这里使用的正确标志吗?问题是否在于使用 OpenCV-2.4.10? (我注意到我引用的博客文章是使用 OpenCV-2.4.6.1)

【问题讨论】:

  • 根据您提供的信息,我认为这不是与 OpenMP 相关的问题。您是否正确安装了 OpenCV 版本以便 Python 可以找到它?
  • 是的,我应该更明确一点。我可以构建和使用 OpenCV 没问题,只是当我尝试使用 WITH_OPENMP=ON 标志构建时
  • 所以问题不在于使用 openmp 构建 OpenCV,而是在使用 openmp 构建 OpenCV 时将其导入 Python。如果您在没有 openmp 的情况下构建 OpenCV,那么您可以毫无问题地将其导入 Python。对吗?
  • 是的,当我使用 OpenMP 构建 OpenCV 时,我无法导入 Python,但我会说问题在于使用 OpenMP 构建

标签: python c++ opencv raspberry-pi raspberry-pi2


【解决方案1】:

我有一个类似的问题。带有 -D WITH_OPENMP=ON 的 cmake 对我来说效果很好。

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 2017-10-22
    • 2016-09-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多