Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 当我在python3.7.3上运行时,为什么我会收到opencv2的重要提示?_Python 3.x_Macos_Opencv - Fatal编程技术网

Python 3.x 当我在python3.7.3上运行时,为什么我会收到opencv2的重要提示?

Python 3.x 当我在python3.7.3上运行时,为什么我会收到opencv2的重要提示?,python-3.x,macos,opencv,Python 3.x,Macos,Opencv,我试图在MacOS10.10上使用python3.7.3导入opencv2,但发生了导入错误。我该如何解决它 我尝试使用pip、pip3和自制软件安装opencv3。可能安装不正确 import cv2 import numpy as np import sys import pytesseract as py import matplotlib.pyplot as plt 错误 Traceback (most recent call last): File "/Users/wujian/

我试图在MacOS10.10上使用python3.7.3导入opencv2,但发生了导入错误。我该如何解决它

我尝试使用pip、pip3和自制软件安装opencv3。可能安装不正确

import cv2
import numpy as np
import sys
import pytesseract as py
import matplotlib.pyplot as plt
错误

Traceback (most recent call last):
  File "/Users/wujian/Desktop/Project/Proj.py", line 1, in <module>
    import cv2
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
    from .cv2 import *
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so, 2): Symbol not found: _clock_gettime
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cv2/.dylibs/libavutil.56.22.100.dylib (which was built for Mac OS X 10.12)
  Expected in: /usr/lib/libSystem.B.dylib
 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cv2/.dylibs/libavutil.56.22.100.dylib
回溯(最近一次呼叫最后一次):
文件“/Users/wukian/Desktop/Project/Proj.py”,第1行,在
进口cv2
文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/cv2/_init__.py”,第3行,在
从cv2进口*
导入错误:dlopen(/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so,2):未找到符号:_clock_gettime
引用自:/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/cv2/.dylibs/libavutil.56.22.100.dylib(为Mac OS X 10.12构建)
应位于:/usr/lib/libSystem.B.dylib中
在/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site packages/cv2/.dylibs/libavutil.56.22.100.dylib中
这个问题似乎(奇怪地)与您的libavutil副本有关,它是ffmpeg的一部分

错误消息的这一部分暗示了这一点:

ImportError: dlopen(/.../cv2/cv2.cpython-37m-darwin.so, 2): Symbol not found: _clock_gettime
  Referenced from: /...python3.7/site-packages/cv2/.dylibs/libavutil.56.22.100.dylib (which was built for Mac OS X 10.12)
安装OpenCV需要ffmpeg。如果您安装了它,它将作为依赖项列出

$ brew info opencv
...
==> Dependencies
Build: cmake ✓, pkg-config ✓
Required: eigen ✓, ffmpeg ✓, glog ✓, ...
安装ffmpeg将包括libavutil库,可以检查或:

现在,您的问题是系统上的libavutil(和ffmpeg)与Mac 10.10不向后兼容。它是针对较新的Mac 10.12构建的,这似乎对
clock\u gettime
API进行了更改,导致了“Symbol not found”错误。这也已报告给:

这与OpenCV无关。错误来自libavutil (=FFmpeg),通过自制软件安装。该错误与 二进制向后兼容性(显然苹果已经改变了 libsystem接口)。我对苹果不太熟悉,但是 如果 较旧的符号也出现在最新的操作系统版本中。满满的 macOS上的向后兼容性可能无法实现


我刚刚被这个问题深深地折磨了一顿 依赖性;FFmpeg的目标是10.12,但我的目标是10.11。希望有一个 修正了即将发布的问题

请注意,虽然降级Xcode可能也会起作用,但正确的方法是 目标是添加早期版本的macOS,例如。 -mmacosx版本最小值=10.11或-mmacosx版本最小值=10.6到CFLAGS/cxflags/LDFLAGS;这将优化头、编译器和链接器 生成至少与该版本的兼容的二进制文件 马科斯

唯一的解决方案似乎是安装一个与Mac 10.10兼容的较旧版本的ffmpeg(带有libavutil),然后告诉OpenCV链接到该较旧版本。您可能还需要从源代码构建OpenCV(请参阅)

您也可以尝试在超级用户处查看此帖子:

  • 尝试从自制中安装旧版本(虽然我不确定这是否可行,但我没有Mac 10.10可供测试)
  • 尝试从下载预构建的静态/共享构建
  • 尝试从源代码构建它(请参见)

您能给我看一下整个错误日志吗?这就是我在python上的全部内容。它显示语法错误:终端上的语法无效。您安装了哪个版本的OpenCV和OpenCV python?我尝试了OpenCV 2.4.13.6和3.4.6,python是3.7.3
$ brew list ffmpeg | grep libavutil.*dylib
/usr/local/Cellar/ffmpeg/4.1.4_1/lib/libavutil.56.22.100.dylib
/usr/local/Cellar/ffmpeg/4.1.4_1/lib/libavutil.56.dylib
/usr/local/Cellar/ffmpeg/4.1.4_1/lib/libavutil.dylib