[解决] Mac下使用opencv与pyqt发生冲突

问题:You might be loading two sets of Qt binaries into the same process

本文用于记录一下解决问题的过程,若只需解决方法可以直接看文章最后部分

本文出现的问题应该是在Mac上才会出现

系统:Mac os 10.14

pyqt/opencv安装均在anaconda虚拟环境下进行

在使用opencv以及pyqt时出现以下错误

objc[2623]: Class QMacAutoReleasePoolTracker is implemented in both /anaconda3/envs/face/lib/python3.7/site-packages/PyQt5/Qt/lib/QtCore.framework/Versions/5/QtCore (0x116bc90f8) and /anaconda3/envs/face/lib/python3.7/site-packages/cv2/.dylibs/QtCore (0x11ef14700). One of the two will be used. Which one is undefined.
objc[2623]: Class QT_ROOT_LEVEL_POOL__THESE_OBJECTS_WILL_BE_RELEASED_WHEN_QAPP_GOES_OUT_OF_SCOPE is implemented in both /anaconda3/envs/face/lib/python3.7/site-packages/PyQt5/Qt/lib/QtCore.framework/Versions/5/QtCore (0x116bc9170) and /anaconda3/envs/face/lib/python3.7/site-packages/cv2/.dylibs/QtCore (0x11ef14778). One of the two will be used. Which one is undefined.
objc[2623]: Class KeyValueObserver is implemented in both /anaconda3/envs/face/lib/python3.7/site-packages/PyQt5/Qt/lib/QtCore.framework/Versions/5/QtCore (0x116bc9198) and /anaconda3/envs/face/lib/python3.7/site-packages/cv2/.dylibs/QtCore (0x11ef147a0). One of the two will be used. Which one is undefined.
objc[2623]: Class RunLoopModeTracker is implemented in both /anaconda3/envs/face/lib/python3.7/site-packages/PyQt5/Qt/lib/QtCore.framework/Versions/5/QtCore (0x116bc91e8) and /anaconda3/envs/face/lib/python3.7/site-packages/cv2/.dylibs/QtCore (0x11ef147f0). One of the two will be used. Which one is undefined.
QObject::moveToThread: Current thread (0x7fcc2cb0a6c0) is not the object's thread (0x7fcc2f06cf20).
Cannot move to target thread (0x7fcc2cb0a6c0)

关键信息

You might be loading **two sets of Qt binaries** into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
qt.qpa.plugin: Could not load the Qt platform plugin "cocoa" in "**/anaconda3/envs/face/lib/python3.7/site-packages/cv2/qt/plugins**" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: cocoa, minimal, offscreen, webgl.

解决方法一

在路径/anaconda3/envs/face/lib/python3.7/site-packages/cv2/下删除qt文件夹即可

但是这么做存在一定问题:在删除qt文件夹后正常的只含有cv2的程序无法正常运行(显然是拆东墙补西墙

但是应急的话应该是没问题的

解决方法二——最终解决

出现问题的原因在于mac版本下安装的opencv包含有一些qt的头文件与pyqt中的发生了冲突,导致无法正确导入相应的包,需要将其更换

按照以下步骤进行

  1. 删除原有的opencv,删除过程中出现y/n选择y即可
pip uninstall opencv-python
  1. 安装opencv–headless版本
pip install opencv-contrib-python-headless

至此应该就可以同时正常运行cv2和pyqt了

### X-AnyLabeling 软件概述 X-AnyLabeling 是一款用于图像标注的开源工具,支持多种数据格式以及高效的标注流程[^1]。该软件基于 PythonPyQt 构建,适用于 Windows、Linux 和 macOS 平台。 --- ### 安装环境准备 在 Mac 上安装 X-AnyLabeling 需要先配置开发环境并满足依赖项需求: #### 1. **Python 版本** 确保已安装 Python 3.7 或更高版本。可以通过以下命令验证: ```bash python --version ``` 如果未安装 Python,则可以从官网下载最新版[^2]: https://www.python.org/downloads/ #### 2. **pip 工具** `pip` 是 Python 的包管理器,需确认其可用性: ```bash pip --version ``` 如果没有安装 `pip`,可以按照官方指南完成设置[^3]。 #### 3. **Git 工具** 由于 X-AnyLabeling 可能需要通过 Git 下载源码,因此建议安装 Git: ```bash git --version ``` 若未安装,请访问 https://git-scm.com/ 进行下载和安装。 --- ### 安装过程 以下是针对 Mac 用户的具体操作说明: #### 方法一:通过 PyPI (推荐) X-AnyLabeling 提供了预构建的 pip 包,可以直接使用以下命令安装: ```bash pip install anylabeling ``` 此方式会自动处理大部分依赖关系,并简化部署步骤[^4]。 #### 方法二:从 GitHub 源码编译 对于高级用户或者希望自定义功能的情况,可以选择克隆仓库并手动安装: 1. 克隆项目到本地目录: ```bash git clone https://github.com/xailab/x-anylabeling.git cd x-anylabeling ``` 2. 创建虚拟环境(可选但推荐): ```bash python -m venv venv source venv/bin/activate ``` 3. 安装所需依赖库: ```bash pip install -r requirements.txt ``` 4. 启动应用程序: ```bash python main.py ``` 这种方法允许完全控制程序行为,但也可能遇到更多兼容性问题[^5]。 --- ### 常见错误排查 当尝试运行上述指令时可能会碰到一些常见障碍,比如权限不足或是缺少特定模块等问题。下面列举几个典型场景及其解决方案: - 如果提示无法找到某些 C++ 库文件,可能是 OpenCV 编译选项不匹配所致;重新指定参数后再试一次即可解决。 - 对于显卡驱动冲突引起的崩溃现象,切换至 CPU-only 模式通常能够绕过此类麻烦。 具体调整细节请参照开发者文档中的指导方针[^6]。 --- ### 使用技巧概览 启动之后界面直观友好,主要分为以下几个部分: - 文件加载区: 支持拖拽图片批量导入. - 标签编辑栏: 自由增删类别名称以便区分不同对象类型. - 注解绘制工具集: 包括矩形框, 多边形等多种几何图形可供选择. 进一步深入学习如何高效利用这些特性来提升工作效率非常值得探索一番[^7]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值