OpenCV在带有anaconda的Linux上与python无法正常工作。获得未实现cv2.imshow()的错误

时间:2016-10-23 19:35:10

标签: python opencv ubuntu anaconda

这是我得到的确切错误。我的操作系统是Ubuntu 16.10。

OpenCV错误:未指定错误(该功能未实现。使用Windows,GTK + 2.x或Carbon支持重建库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config ,然后在cvShowImage中重新运行cmake或配置脚本),文件/feedstock_root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp,第545行 Traceback(最近一次调用最后一次):   File" untitled.py",第7行,in     cv2.imshow('图像',IMG) cv2.error:/feedstock_root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp:545:错误:( - 2)该功能未实现。使用Windows,GTK + 2.x或Carbon支持重建库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config,然后在cvShowImage函数中重新运行cmake或configure脚本

我的代码是:

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就像错误说的那样,但我仍然得到同样的错误。 任何帮助将非常感激。我已经试图解决这个问题几个小时了。

16 个答案:

答案 0 :(得分:43)

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自己构建库,或者像这样使用。

答案 1 :(得分:19)

我不得不处理几次这个问题,到目前为止一直是这样:

conda remove opencv
conda install -c menpo opencv
pip install --upgrade pip
pip install opencv-contrib-python

答案 2 :(得分:9)

如果您在任何时间点使用opencv-python pip包安装OpenCV,请注意以下注释,取自https://pypi.python.org/pypi/opencv-python

  

重要提示   MacOS和Linux车轮目前存在一些局限性:

     
      
  • 不支持视频相关功能(不使用FFmpeg编译)
  •   
  • 例如cv2.imshow()将无效(未使用GTK + 2.x或Carbon支持编译)
  •   

另请注意,要从其他来源安装,首先必须删除opencv-python包

答案 3 :(得分:3)

对我来说(Arch Linux,Anaconda with Python 3.6),从建议的频道menpoloopbio进行安装并没有改变任何内容。我的解决方案(见related question)是

  1. 安装pkg-config(sudo pacman -Syu pkg-config),
  2. 从环境中删除opencv(conda remove opencv)和
  3. 从conda-forge频道(conda install -c conda-forge opencv
  4. 重新安装opencv

    conda list现在返回opencv 3.3.0 py36_blas_openblas_203 [blas_openblas] conda-forge,并且使用cv2启动的所有窗口都正常运行。

答案 4 :(得分:2)

我遵循了本教程(OpenCV GTK+2.x error)并执行了以下操作。它对我有用:

  1. 安装软件包:libgtk2.0-dev和pkg-config
  2. cd到你的opencv目录
  3. mkdir发布
  4. cd Release
  5. 运行命令:.so
  6. 使
  7. sudo make install

答案 5 :(得分:2)

请注意,它正在抱怨libgtk2.0-dev和pkg-config。这是解决方案。卸载现有的openCV安装。

conda删除opencv3

在安装opencv之前安装这些软件包 conda install gtk2 pkg-config

现在从menpo安装opencv conda install -c https://conda.anaconda.org/menpo opencv3

答案 6 :(得分:2)

工作方法(于2019年4月19日测试)

这些错误是由于conda而发生的。打开 Anaconda提示,并使用以下命令删除conda opencv(如果已安装)

  

如果您拥有conda env,请首先将其激活2019

conda activate myenv

通过pip安装opencv后(单击here以获取正式信息)

conda remove opencv

  

如果尚未安装pip,请使用pip install opencv-contrib-python命令。

答案 7 :(得分:1)

我用pip来安装 opencv-python 。 (https://pypi.org/project/opencv-python/

1)从conda中删除opencv包:

>> conda remove opencv

2)在你的env.yml文件中添加:

...
dependencies:
  - numpy
  - pytest
  ...
  - pip:
    - opencv-python

答案 8 :(得分:1)

我的 ubuntu 18.04 机器在 AWS 上运行。 对我有帮助的是 (link):

pip uninstall opencv-python
pip install opencv-python==4.1.2.30

之后我得到了错误:" : cannot connect to X server "

最后,我设法通过安装 MobaXTerm(参考 here)使其工作。

仅供参考:

  1. 我使用 WinSCP 连接到 AWS。如果你通过WinSCP之类的方式连接AWS,MobaXTerm界面让你点击“Sessions”就可以连接到“WinSCP临时会话”,非常方便。会话屏幕基本上取代了控制台,但允许通过弹出窗口显示图像。
  2. 如果您在执行 ASSERT: “false” in file qasciikey.cpp, line 501 或类似操作时也遇到错误 cv.imshow(),请转到 MobaXTerm 界面,单击设置 -> 配置 -> X11,取消选中“Unix-compatible keyboard”(参考here)。

答案 9 :(得分:0)

从anaconda =

中删除opencv
  

conda删除opencv

然后,使用pip重新安装opencv:

  

pip install opencv

这对我有用。

答案 10 :(得分:0)

我的环境是Win10,我将anaconda路径添加到环境变量的PATH”中,cv2.imshow起作用

C:\Users\user\Anaconda3
C:\Users\user\Anaconda3\Scripts

然后重新启动Windows

答案 11 :(得分:0)

尽管已经回答了这个问题,但对我来说,conda-forge解决方案与黑客合作。 我的工作站是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

现在让我们检查显示是否有效。在终端中,激活测试环境并启动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

答案 12 :(得分:0)

如果您在docker内部运行,则可能会遇到此错误。解决方案请卸载当前版本并安装无头机器人

  

pip install opencv-python == 3.4.5.20

     

pip install opencv-contrib-python == 3.4.5.20

如果要写入图像并显示它,则可能需要以下内容

  

apt-get更新&& apt-get安装-y libglib2.0-0 libsm6 libxext6 libxrender1

如果您想知道如何从Docker获取显示,可以通过主机中的X11

答案 13 :(得分:0)

对于我的系统(Ubuntu 18.04),以下工具正在运行。
首先:

sudo apt-get更新-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安装face_recognition

pip install imutils

最后:

pip安装opencv-contrib-python

答案 14 :(得分:0)

轻松使用Ubuntu 18.04。它对我有用:

删除opencv-python:

pip3 uninstall opencv-python

然后重新安装opencv-python:

pip3 install opencv-python

问题已解决。

答案 15 :(得分:0)

我能够通过安装以前版本的 opencv-contrib-python 来修复它。

我使用的是 Ubuntu 18