M1芯片conda环境编译OpenCV未生成所需cv2绑定文件求助
问题根因
- 你提供的cmake输出明确显示Python3配置项中
Libraries: NO、numpy: NO,且标注Python3 wrappers can not be generated,这是没有生成对应编译产物的核心原因:OpenCV的Python绑定依赖Python动态库和numpy两个前置条件,二者缺失会直接跳过Python绑定的编译流程。 - 你写的
PYTHON3_EXECUTABLE参数末尾多了一个斜杠,可能导致cmake识别路径异常,无法关联到对应conda环境的Python库。 - 目标conda环境内未提前安装numpy,cmake扫描不到对应依赖,直接跳过Python绑定生成步骤。
- 编译默认识别到了系统自带的Python2.7作为构建用Python,没有完全绑定你指定的conda环境Python3.8。
解决方案
- 先清理之前的无效编译缓存,进入opencv的build目录执行:
rm -rf *
- 激活目标conda环境,提前安装numpy依赖:
conda activate test_openCV conda install numpy
- 先在激活的conda环境中执行以下命令,获取后续cmake需要的路径参数,保存输出结果备用:
- 获取Python3可执行文件路径:
which python3 - 获取Python3动态库路径:执行
python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))",输出结果后拼接/libpython3.8.dylib(对应你环境的Python3.8版本,版本号匹配即可) - 获取numpy头文件路径:
python3 -c "import numpy; print(numpy.get_include())" - 获取Python3包安装路径:
python3 -c "import site; print(site.getsitepackages()[0])"
- 替换路径后执行修正后的cmake命令:
cmake \ -DCMAKE_SYSTEM_PROCESSOR=arm64 \ -DCMAKE_OSX_ARCHITECTURES=arm64 \ -DWITH_OPENJPEG=OFF \ -DWITH_IPP=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/Users/paveltravnicek/opencv_contrib-4.5.0/modules \ -D PYTHON3_EXECUTABLE=【你查到的Python3可执行文件路径】 \ -D PYTHON3_LIBRARY=【你查到的Python3动态库路径】 \ -D PYTHON3_NUMPY_INCLUDE_DIRS=【你查到的numpy头文件路径】 \ -D PYTHON3_PACKAGES_PATH=【你查到的Python3包安装路径】 \ -D BUILD_opencv_python2=OFF \ -D BUILD_opencv_python3=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D BUILD_EXAMPLES=ON ..
- 执行完cmake后先检查输出的Python3配置块,确认
Libraries、numpy均显示为YES后,再执行make -j8和sudo make install完成编译安装。 - 验证安装:激活conda环境后执行
python3 -c "import cv2; print(cv2.__version__)",正常输出版本号即为安装成功。
内容的提问来源于stack exchange,提问作者Pavel Trávníček
相关产品推荐
相关产品推荐

