You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python调用OpenCV遇导入错误,求助解决方案

OpenCV导入时缺失FFmpeg依赖库的解决办法

问题描述

此前使用OpenCV完全正常,近期运行哪怕是显示图片这类基础Python程序,都会立刻抛出错误。错误栈显示导入cv2时,无法找到FFmpeg相关依赖库:libswresample.4.dylib、libavcodec.59.dylib、libavutil.57.dylib,已尝试卸载重装OpenCV但问题依旧。

错误信息

Traceback (most recent call last):
  File "/Users/myusername/Desktop/opencv_test_main/opencv.py", line 1, in <module>
    import cv2
  File "/opt/homebrew/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/opt/homebrew/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap
    native_module = importlib.import_module("cv2")
  File "/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: dlopen(/opt/homebrew/lib/python3.10/site-packages/cv2/python-3.10/cv2.cpython-310-darwin.so, 0x0002): Library not loaded: /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib
  Referenced from: <D8B40CEE-FD64-33D7-9FBB-D99C076CAE66> /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libavcodec.59.37.100.dylib
  Reason: tried: '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib' (no such file), '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib' (no such file), '/usr/local/lib/libswresample.4.dylib' (no such file), '/usr/lib/libswresample.4.dylib' (no such file, not in dyld cache)Library not loaded: /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib
  Referenced from: <D8E78893-F144-3845-A719-8CFFB8415DC1> /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libavformat.59.27.100.dylib
  Reason: tried: '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib' (no such file), '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib' (no such file), '/usr/local/lib/libavcodec.59.dylib' (no such file), '/usr/lib/libavcodec.59.dylib' (no such file, not in dyld cache)Library not loaded: /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib
  Referenced from: <13009670-C126-334B-9BAE-6C052B28BDCE> /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libswscale.6.7.100.dylib
  Reason: tried: '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib' (no such file), '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib' (no such file), '/usr/local/lib/libavutil.57.dylib' (no such file), '/usr/lib/libavutil.57.dylib' (no such file, not in dyld cache)
myusername@Zachs-MBP-2 opencv_test_main % /opt/homebrew/bin/python3 /Users/myusername/Desktop/opencv_test_main/opencv_test.py
Traceback (most recent call last):
  File "/Users/myusername/Desktop/opencv_test_main/opencv_test.py", line 1, in <module>
    import cv2
  File "/opt/homebrew/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/opt/homebrew/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap
    native_module = importlib.import_module("cv2")
  File "/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: dlopen(/opt/homebrew/lib/python3.10/site-packages/cv2/python-3.10/cv2.cpython-310-darwin.so, 0x0002): Library not loaded: /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib
  Referenced from: <D8B40CEE-FD64-33D7-9FBB-D99C076CAE66> /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libavcodec.59.37.100.dylib
  Reason: tried: '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib' (no such file), '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib' (no such file), '/usr/local/lib/libswresample.4.dylib' (no such file), '/usr/lib/libswresample.4.dylib' (no such file, not in dyld cache)Library not loaded: /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib
  Referenced from: <D8E78893-F144-3845-A719-8CFFB8415DC1> /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libavformat.59.27.100.dylib
  Reason: tried: '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib' (no such file), '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib' (no such file), '/usr/local/lib/libavcodec.59.dylib' (no such file), '/usr/lib/libavcodec.59.dylib' (no such file, not in dyld cache)Library not loaded: /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib
  Referenced from: <13009670-C126-334B-9BAE-6C052B28BDCE> /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libswscale.6.7.100.dylib
  Reason: tried: '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib' (no such file), '/opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib' (no such file), '/usr/local/lib/libavutil.57.dylib' (no such file), '/usr/lib/libavutil.57.dylib' (no such file, not in dyld cache)

解决步骤

1. 安装对应版本的FFmpeg

错误提示中OpenCV依赖的是FFmpeg 5.1.2版本,直接安装该版本:

brew install ffmpeg@5.1

安装完成后,强制链接该版本到系统路径:

brew link --force ffmpeg@5.1

2. 重新安装带FFmpeg支持的OpenCV

如果上面的步骤无效,卸载当前OpenCV后,重新安装带有FFmpeg依赖的版本:

pip uninstall opencv-python opencv-contrib-python -y
pip install opencv-python --no-binary opencv-python

或者用Homebrew直接安装OpenCV(确保关联FFmpeg):

brew uninstall opencv
brew install opencv --with-ffmpeg

3. 修复动态链接库路径

如果FFmpeg已安装但路径不匹配,可以用otool和install_name_tool手动修复cv2的动态链接:
首先查看cv2库依赖的FFmpeg路径:

otool -L /opt/homebrew/lib/python3.10/site-packages/cv2/python-3.10/cv2.cpython-310-darwin.so | grep ffmpeg

然后替换错误的路径为当前FFmpeg的实际路径(假设当前FFmpeg安装在/opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall):

install_name_tool -change /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libswresample.4.dylib /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libswresample.4.dylib /opt/homebrew/lib/python3.10/site-packages/cv2/python-3.10/cv2.cpython-310-darwin.so
install_name_tool -change /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavcodec.59.dylib /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libavcodec.59.dylib /opt/homebrew/lib/python3.10/site-packages/cv2/python-3.10/cv2.cpython-310-darwin.so
install_name_tool -change /opt/homebrew/Cellar/ffmpeg/5.1.2/lib/libavutil.57.dylib /opt/homebrew/Cellar/ffmpeg/5.1.2.reinstall/lib/libavutil.57.dylib /opt/homebrew/lib/python3.10/site-packages/cv2/python-3.10/cv2.cpython-310-darwin.so

4. 检查Python环境

如果使用虚拟环境,确保激活对应的环境后再安装OpenCV和FFmpeg相关依赖,避免全局环境和虚拟环境的依赖冲突。


内容的提问来源于stack exchange,提问作者Velocity Games

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:01:02