如何在安装python2和python3时为python3构建opencv

13 python opencv

我试图为python3构建opencv.但是,即使我手动为python3指定了include和lib选项之后,cmake总是将python构建选项设置为python2.7.11:

    --   Python 2:
    --   Interpreter:                 /home/ryu/anaconda2/bin/python2.7 (ver 2.7.11)

    --   Python 3:
    --     Interpreter:                 /usr/bin/python3 (ver 3.4.3)
    --     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.4m (ver 3.4.3)
    --     numpy:                       /home/ryu/.local/lib/python3.4/site-packages/numpy/core/include (ver 1.11.0)  

    --  packages path:               lib/python3.4/dist-packages

-- 
--   **Python (for build):            /home/ryu/anaconda2/bin/python2.7**
Run Code Online (Sandbox Code Playgroud)

我错过了一些cmake选项吗?

操作系统:Ubuntu 14,04

谢谢

Iva*_*eno 38

您可以通过PYTHON_DEFAULT_EXECUTABLEcmake调用期间使用python可执行URI 附加参数来覆盖要构建的python可执行文件.

cmake {...} -DPYTHON_DEFAULT_EXECUTABLE=$(which python3) ..
Run Code Online (Sandbox Code Playgroud)


gda*_*ras 5

我在这个上挣扎了几个小时,上面提到的答案并不能立即解决问题。

除了Ivan的答案外,我还必须在cmake中包括这些标志才能使这项工作:

-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=ON \
-D HAVE_opencv_python3=ON \
-D PYTHON_DEFAULT_EXECUTABLE=<path_to_python3> 
Run Code Online (Sandbox Code Playgroud)

我把它留在这里,所以将来对其他人可能有用。


Ale*_*xey 5

我花了几个小时。我用 opencv 为 python3 构建了 Dockerfile,关键字符串是

pip install numpy

完整的 Docker 文件:

FROM python:3.8

RUN apt-get update && apt-get -y install \
    cmake \
    qtbase5-dev \
    libdc1394-22-dev \
    libavcodec-dev \
    libavformat-dev \
    libswscale-dev

RUN cd /lib \
    && git clone --branch 4.1.1 --depth 1  https://github.com/opencv/opencv.git \
    && git clone --branch 4.1.1 --depth 1  https://github.com/opencv/opencv_contrib.git

RUN pip install numpy \
    && mkdir /lib/opencv/build \
    && cd /lib/opencv/build \
    && cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_QT=ON -DWITH_OPENGL=ON -DWITH_FFMPEG=ON -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_EXTRA_MODULES_PATH=/lib/opencv_contrib/modules .. \
    && make -j8 \
    && make install

CMD ["bash"]

Run Code Online (Sandbox Code Playgroud)

要点是强制编译器cv2为python构建模块

为了做到这一点,我们需要python3将其包含在文件夹中的文件To be builtCMakeCache.txtbuildopencv

参考https://breakthrough.github.io/Installing-OpenCV/

如果出现任何错误,请确保您下载了所有必需的软件包 - 输出应该有助于追踪丢失的内容。为了确保构建 Python 模块,运行 cmake 后您应该在配置的模块列表中看到 python2

(在我的例子中是python3)