2015-04-07 3 views
2

Пользователь в this SOF post предлагает построить OpenCV с флагом WITH_OPENMP для включения (некоторой) поддержки многоядерных процессоров. Я попытался построить OpenCV-2.4.10 с помощью OpenMP, но я не могу импортировать cv2 в Python.Как скомпилировать OpenCV с OpenMP

Примечание: Я могу построить и использовать OpenCV-2.4.10 в Python. Проблема связана с флагом WITH_OPENMP.

Я замена строки 49-58 в opencv-2.4.10/cmake/OpenCVFindLibsPerf.cmake, как это было предложено в this блоге, со следующим:

# --- 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)

+0

Основываясь на информации, предоставленной вами, я не думаю, что это проблема, связанная с OpenMP. Вы правильно установили свою сборку OpenCV, чтобы Python мог ее найти? – nils

+0

Да, я должен был быть более явным. Я могу создать и использовать OpenCV без проблем, просто когда я пытаюсь создать флаг 'WITH_OPENMP = ON' – NRKirby

+0

. Поэтому проблема заключается не в создании OpenCV с openmp, а при импорте в Python, если вы создаете его с помощью openmp. Если вы создаете OpenCV без openmp, вы можете без проблем импортировать его на Python. Верный? – Antonio

ответ

8

У меня был знакомый вопрос. cmake с -D WITH_OPENMP = ON работал отлично для меня.