Как собрать и установить OpenCV 4.0? - PullRequest
0 голосов
/ 15 февраля 2019

Сначала я хотел бы заявить, что я учусь, поэтому есть много вещей, которых я не знаю.

Я использую Jetson TX1, уже созданный с помощью JetPack 3.3

Использование платыUbuntu 16.04

Я установил cmake 3.13.4.Я установил Python 3.7 (включая Python 2.7 (по умолчанию) / Python3 / Python3.5 / Python 3.7).

Я использую команду python3.7 -m pip install numpy.Это показывает

Successfully installed numpy-1.16.1

У меня есть вопрос здесь : как узнать, где установлен numpy?Когда я использую команду ls для просмотра /usr/local/lib/python3.7/dist-packages, она показывает пустой.

Когда я впервые пытался собрать openCV, я получил

Python 2:
    Interpreter:                 /usr/bin/python2.7 (ver 2.7.12)
    Libraries:                   /usr/lib/aarch64-linux-gnu/libpython2.7.so (ver 2.7.12)
    numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.11.0)
    packages path:               lib/python2.7/dist-packages

  Python 3:
    Interpreter:                 /usr/bin/python3 (ver 3.5.1)

Я хотел бы использовать Python3.7 для сборки openCV.У меня нет большого опыта работы с cmake, но я знаю, что могу изменить параметры в файле "CMakeLists.txt", определяя этот параметр при использовании командной строки cmake.

У меня есть вопрос здесь : Есть ли другой способ определения этих параметров, поэтому мне не нужно включать эти параметры в командные строки каждый раз, когда я хочу собрать с помощью cmake?

Затем я использовал ниже строку cmd

sudo cmake -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D WITH_CUFFT=OFF -D WITH_CUBLAS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=OFF -D PYTHON3_EXECUTABLE=/usr/bin/python3.7 -D PYTHON3_LIBRARIES=/usr/lib/aarch64-linux-gnu/libpython3.7m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3.7/dist-packages/numpy/core/include -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3.7 -D BUILD_EXAMPLES=OFF ..

Я получил

Python 3:
--     Interpreter:                 /usr/bin/python3.7 (ver 3.5.2)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.7m.so (ver 3.5.2)
--     numpy:                       /usr/lib/python3.7/dist-packages/numpy/core/include (ver 1.16.1)
--     packages path:               lib/python3.5/dist-packages
-- 
--   Python (for build):            /usr/bin/python3.7

У меня есть вопрос : Что такое версия 3.5.2 после Python 3.7?Я не уверен, почему путь пакетов указывает на Python 3.5.Там нет libpython3.7, поэтому я выбрал тот, который я нашел, это libpython3.7m.so.Это правильно?

Тогда я использую

sudo make -j4

В конце я получил ниже сообщения об ошибках:

[ 98%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o
/mnt/data/Software/opencv/modules/python/src2/cv2.cpp:39:33: fatal error: numpy/ndarrayobject.h: No such file or directory
compilation terminated.
modules/python3/CMakeFiles/opencv_python3.dir/build.make:62: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o' failed
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1
CMakeFiles/Makefile2:3371: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed
make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 98%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/opencl/perf_motempl.cpp.o
[ 98%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_estimaterigid.cpp.o
[ 98%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/opencl/perf_optflow_farneback.cpp.o
[ 98%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/opencl/perf_optflow_pyrlk.cpp.o
[ 98%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_kalman.cpp.o
[ 98%] Linking CXX executable ../../bin/opencv_test_calib3d
[ 98%] Built target opencv_test_calib3d
[ 99%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/perf_bgfg_knn.cpp.o
[100%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_main.cpp.o
[100%] Building CXX object modules/video/CMakeFiles/opencv_test_video.dir/test/test_optflowpyrlk.cpp.o
[100%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/perf_bgfg_mog2.cpp.o
[100%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/perf_disflow.cpp.o
[100%] Linking CXX executable ../../bin/opencv_test_video
[100%] Built target opencv_test_video
[100%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/perf_ecc.cpp.o
[100%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/perf_main.cpp.o
[100%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/perf_optflowpyrlk.cpp.o
[100%] Building CXX object modules/video/CMakeFiles/opencv_perf_video.dir/perf/perf_variational_refinement.cpp.o
[100%] Linking CXX executable ../../bin/opencv_perf_video
[100%] Built target opencv_perf_video
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

Как я могу исправить эти проблемы?

1 Ответ

0 голосов
/ 15 февраля 2019

Вот некоторые ответы ...

Путь и версию установки Numpy можно получить с помощью:

import numpy as np

print(np.__path__)
'/usr/local/lib/python3.7/site-packages/numpy'

print(np.__version__)
'1.15.1

Вы также можете получить каталог установки с помощью pip:

pip show numpy

Пример вывода

Name: numpy
Version: 1.15.1
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/site-packages
Requires: 
Required-by: tifffile, scipy, scikit-learn, PyWavelets, numexpr, numba, matplotlib, imageio 

Как правило, не следует использовать sudo для cmake, вместо этого просто:

cmake ...

Если вы не хотите вводить все ключи, я обычно делаю сценарий оболочки вне всех вещей OpenCV и в $HOME/scripts, и я сохраняю все переключатели там:

#!/bin/bash

cd $HOME/OpenCV/build/somewhere

cmake -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D CMAKE_BUILD_TYPE=RELEASE ..

Не используйте sudo для make, предпочитайте:

make -j 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...