无法在 M1 Mac 上安装 OpenCV Python

Posted

技术标签:

【中文标题】无法在 M1 Mac 上安装 OpenCV Python【英文标题】:Unable to install OpenCV Python on M1 Mac 【发布时间】:2021-09-20 20:36:04 【问题描述】:

我一直在关注这个帖子 (https://trayansh.medium.com/setting-machine-learning-environment-on-m1-mac-apple-silicon-959836bf494d),成功安装了 TensorFlow,但是在为 openCV 制作配置文件(Cmake 命令)时,它给了我一个错误:-

CMake Error at cmake/OpenCVModule.cmake:354 (message):
  Duplicated modules LOCATIONS has been found
Call Stack (most recent call first):
  cmake/OpenCVModule.cmake:371 (_assert_uniqueness)
  modules/CMakeLists.txt:7 (ocv_glob_modules)

我已经尝试安装它两天了,但没有任何进展。 :(

我使用的 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/yashdhingra/Documents/Python/opencompile/opencv-4.5.0/modules \
-D PYTHON3_EXECUTABLE=/opt/homebrew/Caskroom/miniforge/base/envs/MLenv/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 ..

我确实按照指南中的说明更改了模块和 Virtual Env_python 的路径。

【问题讨论】:

请在问题后添加 exact cmake 您为 OpenCV 运行的命令。您引用的链接建议了该命令的许多参数,因此其中一些参数可能是错误的。 看看。我已经添加了我使用的命令。 【参考方案1】:

您可能已将额外模块复制到主模块目录中,然后使用 -D OPENCV_EXTRA_MODULES_PATH=/opt/OpenCV3.4/modules 来定位它。但是模块定位器会查看目录中的所有模块;然后它还要求每个模块都是唯一的并且只能看到一次。由于 cmake 默认会查看主 /module 目录中的所有模块,然后在指定此 cmake 选项时再次查看 EXTRA_MODULES 路径中的所有模块,它会感到困惑,并认为它两次看到完全相同的模块,然后是 barfs。

解决方案 1:不要在您的 cmake 指令中指定 -D OPENCV_EXTRA_MODULES_PATH=/opt/OpenCV3.4/modules 如果您已手动将所有额外模块包含到默认系统模块文件中。它只会检查这个目录一次,并且会愉快地编译所有这些。

解决方案 2:将额外的模块保存在自己的单独目录中,并指定 cmake 选项 -D OPENCV_EXTRA_MODULES_PATH=/my_extra_modules_directory 与主 /modules 目录分开。

【讨论】:

请注意,在进行此修复后,您必须清除 /build 目录下的所有文件,因为 cmake 在之前的调用中具有粘性。【参考方案2】:

此 CMake 错误(已找到重复的模块位置)是因为您将额外的模块路径指向您尝试构建的主 opencv 模块。 您需要将额外的模块路径设置为 opencv-contrib 而不是 opencv。

OPENCV_EXTRA_MODULES_PATH=/Users/yashdhingra/Documents/Python/opencompile/opencv_contrib-4.5.0/modules

【讨论】:

以上是关于无法在 M1 Mac 上安装 OpenCV Python的主要内容,如果未能解决你的问题,请参考以下文章

未能在 Mac(Apple M1)上安装 opencv4nodejs 会引发找不到路径错误

我无法在 Mac M1 上安装 weblogic 12c

我无法在 R 中的 M1 Mac 上使用 keras 中的功能,它要求我安装 arm64e 版本的 miniconda3。该怎么办?

Cocoapods 无法在新的 m1 mac Big Sur Xcode 上运行

如何在mac m1上安装oracle database express

在arm架构的mac上安装sql server(m1芯片 or m2芯片)