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.如果你不想这样做,你可以尝试使用ma​​tplotlib

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

? 如果你有 conda env,首先激活它conda activate <your_env_name>

⏬ 通过pip安装opencv后(点击here查看官方信息) ?‍? 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),从建议的频道 menpoloopbio 安装并没有改变任何东西。我的解决方案(见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() 的错误的主要内容,如果未能解决你的问题,请参考以下文章

Opencv图像读取,显示,保存,类型转换

怎么检测opencv安装anaconda

windows下anaconda2.7怎么安装opencv

安装anaconda后opencv不能用怎么办

Anaconda安装OpenCV没有自动代码补全

利用Anaconda软件安装opencv模块