Все приведенные выше ответы не сработали для меня , однако, после целого дня борьбы, я наконец-то решил эту проблему.
Чтобы иметь cv2.so, нам нужно:
- По крайней мере Python 2 или 3 установлены. вот почему люди говорят:
sudo apt-get install python-dev
. Но это не обязательно , в моем случае я использую anaconda python . (Есть много способов установить Python)- numpy также является обязательным. Итак, какой бы Python вы ни использовали, просто убедитесь, что он загружен. В моем случае я использую anaconda numpy . (anaconda уже установила его, для обычного python, используйте
pip install numpy
)
Чтобы сказать camke, где находится путь, просто возьмите мою команду в качестве примера:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
-D PYTHON2_EXECUTABLE='/home/parallels/anaconda2/bin/python' \
-D PYTHON2_LIBRARY='/home/parallels/anaconda2/lib/python2.7' \
-D PYTHON2_NUMPY_INCLUDE_DIRS='/home/parallels/anaconda2/lib/python2.7/site-packages/numpy/core/include' \
-D BUILD_EXAMPLES=ON ..
для python3 , вы должны (я использую anaconda python, поэтому я связал все с anaconda):
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.3.1/modules \
-D PYTHON3_EXECUTABLE='/home/test/SoftWare/anaconda3/bin/python3.6m' \
-D PYTHON_INCLUDE_DIR='/home/test/SoftWare/anaconda3/include/python3.6m' \
-D PYTHON3_LIBRARY='/home/test/SoftWare/anaconda3/lib/libpython3.6m.so' \
-D PYTHON3_NUMPY_INCLUDE_DIRS='/home/test/SoftWare/anaconda3/lib/python3.6/site-packages/numpy/core/include' \
-D PYTHON3_PACKAGES_PATH='/home/test/SoftWare/anaconda3/lib/python3.6/site-packages' ..
Одна вещь, которую нужно запомнить !!! прежде чем войти в cmake ... 1. очистите вашу папку сборки, 2. Только один раз! , иначе вы не можете изменить ** PYTHON3_LIBRARY: НЕТ ** ... (я думаю, что это ошибка)
Я знаю, что могут быть некоторые бесполезные аргументы, но я Я устал, чтобы попытаться очистить их. Вот скриншот моей информации о печати cmake. Снимок экрана с моей информацией о cmake
Вы можете ясно видеть, что только python2 может генерировать cv2.so. Python3 не может! (Оболочки Python3 не могут быть сгенерированы).
Нет, вы не можете повысить уровень существующего процесса. Вы правы - вы начали новый процесс с повышенными привилегиями и заставили его делать всю работу за вас.
Еще один возможный ответ (который заканчивается по сути тот же ответ) - это иметь службу, которая работает как LocalSystem, которая выполняет повышенную работу за вас.