OpenCV 在带有 anaconda 的 Linux 上无法与 python 一起正常工作。收到未实现 cv2.imshow() 的错误
Posted
技术标签:
【中文标题】OpenCV 在带有 anaconda 的 Linux 上无法与 python 一起正常工作。收到未实现 cv2.imshow() 的错误【英文标题】:OpenCV not working properly with python on Linux with anaconda. Getting error that cv2.imshow() is not implemented 【发布时间】:2017-03-05 13:22:44 【问题描述】:这是我得到的确切错误。我的操作系统是 Ubuntu 16.10。
OpenCV 错误:未指定错误(该功能未实现。使用 Windows、GTK+ 2.x 或 Carbon 支持重建库。如果您在 Ubuntu 或 Debian 上,请安装 libgtk2.0-dev 和 pkg-config ,然后重新运行 cmake 或配置脚本)在 cvShowImage,文件 /feedstock_root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp,第 545 行 回溯(最近一次通话最后): 文件“untitled.py”,第 7 行,在 cv2.imshow('图片',img) cv2.error: /feedstock_root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp:545: error: (-2) 功能没有实现。使用 Windows、GTK+ 2.x 或 Carbon 支持重建库。如果你在 Ubuntu 或 Debian 上,安装 libgtk2.0-dev 和 pkg-config,然后重新运行 cmake 或在函数 cvShowImage 中配置脚本
我的代码是:
import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('0002.png',0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
0002.png 是与程序位于同一目录中的图像。 我首先用python 3.5安装了anaconda,然后我使用命令安装了opencv
conda install -c conda-forge opencv
我安装了 libgtk2.0-dev,就像错误所说的那样,但我仍然得到同样的错误。 任何帮助将非常感激。我已经尝试解决这个问题几个小时了。
【问题讨论】:
【参考方案1】:1.最简单的方法:
conda remove opencv
conda update conda
conda install --channel menpo opencv
或(对于 OpenCV 3.1):
conda install -c menpo opencv3
2.如果你不想这样做,你可以尝试使用matplotlib。
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('img.jpg',0)
plt.imshow(img, cmap='gray')
plt.show()
3.或者尝试使用选项 WITH_GTK=ON
自己构建库,或者类似的东西。
更新 - 2019 年 6 月 18 日
我的 Ubuntu(18.04.1 LTS) 系统上的 openCV 3.4.2 出现此错误,因为对 cv2.imshow 的方法调用失败。我正在使用蟒蛇。仅以下 2 个步骤帮助我解决了问题:
conda remove opencv
conda install -c conda-forge opencv=4.1.0
如果你用的是pip,可以试试
pip install opencv-contrib-python
【讨论】:
或者你可以使用conda install --channel loopbio --channel conda-forge --channel pkgw-forge gtk2 ffmpeg ffmpeg-feature gtk2-feature opencv
。 (详情here。)
对于 conda(实际上是Miniconda)最好使用环境。此外,对于conda
和 Python 3.6,似乎 opencv
安装临时失败,所以现在应该是 conda create --name py3 python=3.5
,然后是 activate py3
,然后是 conda install -c menpo opencv3
。
更新:opencv-python 3.4.0.12
已经支持视频相关功能,所以我们可以正常使用pip install opencv-python
。
对于未来的读者:只有这对我有用:conda install -c menpo opencv3
。第一个不能解决问题 (conda install --channel menpo opencv
)
今天是 2020 年 1 月 24 日。这不起作用。但是,下面@Yedhrab 建议的解决方案确实有效。【参考方案2】:
我不得不多次处理这个问题,这是迄今为止一直有效的:
conda remove opencv
conda install -c menpo opencv
pip install --upgrade pip
pip install opencv-contrib-python
【讨论】:
是的,当 Alex Glinsky 的回答无效时,这对我有用。 这也对我有用。我花了几个小时来解决这个问题.. 终于成功了 在 MX Linux 上使用 Miniconda 为我工作。 花了我 2 天的时间终于让它工作了......非常感谢 拯救了我的夜晚!【参考方案3】:?工作方法(??测试于2019年4月19日)
? 这些错误是由 conda 造成的。 ? 打开 Anaconda Prompt 并删除 conda opencv(如果已安装) ??conda remove opencv
⏬ 通过pip安装opencv后(点击here查看官方信息) ??? 如果你有 conda env,首先激活它
conda activate <your_env_name>
pip install opencv-contrib-python
? 如果 pip 没有安装,请使用
conda install pip
命令。
【讨论】:
我喜欢所有的表情符号! 我在删除opencv后得到Found conflicts! Looking for incompatible packages.
,但让我们看看它是否可以自行修复。 (准确地说,卸载后尝试再次安装opencv时显示消息)编辑:好的,它有效,谢谢!
01.01.2021!我在 AWS 上运行 ubuntu 18.04。在我的 conda-env 中,只有 numpy 和 opencv(按照建议安装)。它工作(或多或少),因为我得到一个不同的错误(至少有一些进展):这个应用程序无法启动,因为没有 Qt 平台插件可以被初始化。重新安装应用程序可能会解决此问题。可用的平台插件有:xcb。
12.04.2021,这是我使用 python 3.7 的 conda 环境的唯一解决方案。似乎所有 conda 频道都没有正确安装 opencv,只有 pip 做得很好。【参考方案4】:
如果您在任何时候使用 opencv-python pip 包安装 OpenCV,请注意以下注释,取自 https://pypi.python.org/pypi/opencv-python
重要提示 MacOS 和 Linux ***目前有一些限制:
不支持视频相关功能(未使用 FFmpeg 编译) 例如cv2.imshow()
将不起作用(未使用 GTK+ 2.x 或 Carbon 支持编译)
还要注意,要从其他来源安装,首先必须删除 opencv-python 包
【讨论】:
【参考方案5】:对我来说(Arch Linux、Anaconda 和 Python 3.6),从建议的频道 menpo
或 loopbio
安装并没有改变任何东西。我的解决方案(见related question)是
-
安装 pkg-config (
sudo pacman -Syu pkg-config
),
从环境中移除 opencv (conda remove opencv
) 和
从 conda-forge 频道重新安装 opencv (conda install -c conda-forge opencv
)
conda list
现在返回 opencv 3.3.0 py36_blas_openblas_203 [blas_openblas] conda-forge
,并且所有使用 cv2 启动的窗口都可以正常工作。
【讨论】:
花了一个多小时解决这个问题后,终于这个答案对我有用!非常感谢!!!【参考方案6】:我按照本教程 (OpenCV GTK+2.x error) 进行了以下操作。它对我有用:
-
安装软件包:libgtk2.0-dev 和 pkg-config
cd 到你的 opencv 目录
mkdir 发布
cd 发布
运行命令:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..
制作
sudo make install
【讨论】:
你能解释一下“你的opencv目录”是什么吗? 它是从 wget github.com/opencv/opencv/archive/$OPENCV_VERSION.zip 解压存档文件夹 anaconda上哪里可以找到opencv目录?【参考方案7】:请注意,它正在抱怨 libgtk2.0-dev 和 pkg-config。这是解决方案。卸载现有的 openCV 安装。
conda 删除 opencv3
在安装opencv之前安装这些包- conda install gtk2 pkg-config
现在从 menpo 安装 opencv conda install -c https://conda.anaconda.org/menpoopencv3
【讨论】:
$ conda install gtk2 pkg-config 解决环境:失败 PackagesNotFoundError:当前渠道不提供以下软件包:- gtk2【参考方案8】:如果您在 docker 中运行,那么您可能会收到此错误。解决方案卸载当前并安装无头的
pip install opencv-python==3.4.5.20
pip install opencv-contrib-python==3.4.5.20
如果您正在写入图像并显示它,您可能需要以下内容
apt-get update && apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender1
如果您想知道如何从 Docker 获取显示,可以通过主机中的 X11 实现
【讨论】:
【参考方案9】:我使用 pip 安装 opencv-python。 (https://pypi.org/project/opencv-python/)
1) 从 conda 中移除 opencv 包:
>> conda remove opencv
2) 在您的 env.yml 文件中添加:
...
dependencies:
- numpy
- pytest
...
- pip:
- opencv-python
【讨论】:
【参考方案10】:我的 ubuntu 18.04 机器在 AWS 上运行。 对我有帮助的是 (link):
pip uninstall opencv-python
pip install opencv-python==4.1.2.30
后来我得到了错误:" : cannot connect to X server "
最后,我设法通过安装MobaXTerm(参考here)使其工作。
仅供参考:
-
我使用 WinSCP 连接到 AWS。如果你通过 WinSCP 之类的东西连接到 AWS,点击“Sessions”,MobaXTerm 界面可以让你连接到“WinSCP 临时会话”,非常方便。会话屏幕基本上取代了控制台,但允许通过弹出窗口显示图像。
如果您在执行
cv.imshow()
或类似内容后也遇到错误ASSERT: “false” in file qasciikey.cpp, line 501
,请转到MobaXTerm 界面,单击设置-> 配置-> X11,取消选中“Unix 兼容键盘”(参考here) .
【讨论】:
【参考方案11】:从 anaconda= 中删除 opencv
conda 删除 opencv
然后,使用 pip 重新安装 opencv:
点安装opencv
这对我有用。
【讨论】:
【参考方案12】:我的环境是Win10,我把anaconda路径加到环境变量的PATH'中,cv2.imshow工作了
C:\Users\user\Anaconda3
C:\Users\user\Anaconda3\Scripts
然后重启windows
【讨论】:
【参考方案13】:虽然这已经得到解答,但对我来说 conda-forge 解决方案使用了 hack。 我的工作站是 centos 6 机器,我使用 conda 虚拟环境(anaconda 2)。创建环境
conda create --name test python=2.7
然后激活它
conda activate test
现在从 conda-forge 安装 opencv
conda install -c conda-forge opencv
现在在这个环境中安装 matplotlib(这是 hack 1)
conda install matplotlib
现在让我们检查一下 imshow 是否有效。在终端中,激活测试环境并启动 python。在解释器中,做
import cv2
import matplotlib.pyplot as plt # hack 2
img = cv2.imread('your_image_file',0)
cv2.imshow('image',img)
这应该会弹出一个显示图像的窗口。我没有进一步研究这是如何解决此案的。
注意 1:您可能会看到一些与 xkb 相关的错误,然后在您的 .bashrc 文件中添加
导出 QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb
注意 2:您可能会看到一些与 XDG_RUNTIME_DIR 相关的错误,然后在您的 .bashrc 文件中也添加
导出 XDG_RUNTIME_DIR=.tmp/myruntime 并通过 mkdir -p .tmp/myruntime
定义 myruntime【讨论】:
【参考方案14】:对于我的系统(Ubuntu 18.04),以下工作正常。 第一:
sudo apt-get update -y
sudo apt-get install -y libgtk2.0-dev
conda create -n py35 python=3.5
conda 激活 py35
然后配置环境
pip 安装 Cython
pip install scikit-build
conda install -c anaconda cmake
pip 安装 dlib
pip install face_recognition
pip 安装 imutils
最后:
pip install opencv-contrib-python
【讨论】:
【参考方案15】:轻松使用 Ubuntu 18.04。它对我有用:
移除 opencv-python:
pip3 uninstall opencv-python
然后重新安装opencv-python:
pip3 install opencv-python
问题已解决。
【讨论】:
【参考方案16】:我可以通过安装以前版本的 opencv-contrib-python
来修复它。
我使用的是 Ubuntu 18
【讨论】:
以上是关于OpenCV 在带有 anaconda 的 Linux 上无法与 python 一起正常工作。收到未实现 cv2.imshow() 的错误的主要内容,如果未能解决你的问题,请参考以下文章