【问题标题】:Installing Opencv3 in Python on Mac error在 Mac 上的 Python 中安装 Opencv3 错误
【发布时间】:2018-07-05 18:53:44
【问题描述】:

我正在尝试使用此链接 (https://www.codingforentrepreneurs.com/blog/install-opencv-3-for-python-on-mac/) 在 Mac 上安装 Opencv 3 for Python

我正在使用 python 3.6.4,我目前处于第 6 步(关于链接)

我直接从 Mac 终端使用 Python,当我插入以下命令时出现此错误:

$ ln -S /usr/local/Cellar/opencv/3.4.0_1/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so /usr/local/lib/python3.6/site-packages/cv2.so
  File "<stdin>", line 1
    ln -S /usr/local/Cellar/opencv/3.4.0_1/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so /usr/local/lib/python3.6/site-packages/cv2.so
                                         ^
SyntaxError: invalid syntax

【问题讨论】:

  • opencv目录下有3.4.0_1目录吗?
  • 你需要的是小写的s,即ln -s ...
  • 我如何确保我在opencv下有目录3.4.0_1? @SudheeshSinganamalla
  • 我用了小写的s,问题依旧。 @MarkSetchell
  • cd /usr/local/Cellar/opencv/ 然后执行ls 来检查目录名称?

标签: python macos opencv


【解决方案1】:

您基本上需要运行如下命令:

ln -s SRC TGT

SRC 是您刚刚构建/安装的库,TGT 是您希望它对 Python 可见的位置。


找到SRC文件,独立于你安装的OpenCV版本,像这样:

SRC=$(find /usr/local/Cellar/opencv -name "cv2.cpython*so")

并检查它看起来是否正确:

echo "$SRC"

应该只有一行。如果多于一行,则表示您安装了多个版本的 OpenCV,因此可能如下所示:

/usr/local/Cellar/opencv/3.4.0_1/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so
/usr/local/Cellar/opencv/3.3.1_7/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so

在这种情况下,选择您想要的并手动将SRC 设置为那个,例如

SRC=/usr/local/Cellar/opencv/3.4.0_1/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so

找到 TGT 目录,与您安装的 Python 版本无关,如下所示:

TGT=$(find /usr/local/lib/ -type d -name "site-packages")

并检查它看起来是否正确:

echo "$TGT"

应该只有一行。如果多于一行,则表示您安装了多个 Python 版本,可能如下所示:

/usr/local/lib/python3.6/site-packages
/usr/local/lib/python3.5/site-packages

如果是这种情况,请选择您要使用的那个并手动设置TGT,例如:

TGT=/usr/local/lib/python3.6/site-packages

现在建立链接:

ln -s "$SRC" "$TGT/cv2.so"

【讨论】:

    【解决方案2】:

    在第 6 步中,您首先获取sys 路径,注意这是在运行 python 时完成的。

    你可以看出来,因为提示“>>>”在

    >>> print(sys.path)
    

    如果你接着输入:

    ln -s /usr/local/Cellar/opencv/3.4.1_4/....
    

    在 Python 中,您将得到您提到的确切错误。

    为了完成第 6 步,您现在必须通过键入退出 python

    >>> exit()
    

    现在您将看到$ 提示符。

    我意识到您陈述问题的方式是您已经在 $ 提示符处,所以这可能没有实际意义......但是如果您输入您的问题而不是剪切和粘贴它,那么您可能在这里输入错误并且当您遇到错误时,您实际上仍在 Python 中。

    $ ln -s /usr/local/Cellar/opencv/3.4.1_4/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so /usr/local/lib/python3.6/site-packages/cv2.so
    

    【讨论】:

    • 欢迎来到 Stack Overflow!请下次使用编辑器中的括号格式化您的代码,这次我已经为您完成了。
    猜你喜欢
    • 2017-09-25
    • 2017-05-17
    • 1970-01-01
    • 2017-12-21
    • 2018-03-07
    • 2017-08-30
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多