OpenCV在使用anaconda的Linux上无法与python正常工作。获取未实现cv2.imshow()的错误信息

OpenCV在使用anaconda的Linux上无法与python正常工作。获取未实现cv2.imshow()的错误信息,python,opencv,ubuntu,anaconda,Python,Opencv,Ubuntu,Anaconda,这正是我得到的错误。我的操作系统是Ubuntu 16.10 OpenCV错误:未指定的错误(该函数未实现。使用Windows、GTK+2.x或Carbon支持重建库。如果您在Ubuntu或Debian上,请安装libgtk2.0-dev和pkg config,然后重新运行cmake或configure脚本),位于cvShowImage、file/feedu_root/build_artifacts/work/OpenCV-3.1.0/modules/highgui/src/window.cpp中

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


OpenCV错误:未指定的错误(该函数未实现。使用Windows、GTK+2.x或Carbon支持重建库。如果您在Ubuntu或Debian上,请安装libgtk2.0-dev和pkg config,然后重新运行cmake或configure脚本),位于cvShowImage、file/feedu_root/build_artifacts/work/OpenCV-3.1.0/modules/highgui/src/window.cpp中,第545行 回溯(最近一次呼叫最后一次): 文件“untitled.py”,第7行,在 cv2.imshow(“图像”,img) cv2.error:/feed\u root/build\u artifacts/work/opencv-3.1.0/modules/highgui/src/window.cpp:545:error:(-2)未实现该函数。使用Windows、GTK+2.x或碳纤维支架重建库。如果您在Ubuntu或Debian上,请安装libgtk2.0-dev和pkg-config,然后在函数cvShowImage中重新运行cmake或配置脚本

我的代码是:

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是与程序位于同一目录中的图像。 我首先使用Python3.5安装了anaconda,然后使用命令安装了opencv

conda install -c conda-forge opencv
正如错误所说的那样,我安装了libgtk2.0-dev,但我仍然收到相同的错误。 任何帮助都将不胜感激。我已经试着解决这个问题好几个小时了。

我按照本教程()做了以下工作。这对我很有用:

  • 安装程序包:libgtk2.0-dev和pkg-config
  • cd到您的opencv目录
  • mkdir发布
  • 光盘发行
  • 运行命令:
    cmake-dcmake\u BUILD\u TYPE=RELEASE-dcmake\u INSTALL\u PREFIX=/usr/local-D WITH\u TBB=ON-D BUILD\u NEW\u PYTHON\u SUPPORT=ON-D WITH\u V4L=ON-D INSTALL\u C\u EXAMPLES=ON-D INSTALL\u PYTHON\u EXAMPLES=ON-D BUILD=ON-D WITH\u QT=ON-D WITH\u GTK=ON-D WITH\u OPENGL=ON.
  • 制造
  • sudo制作安装
  • 1.最简单的方法:

    conda remove opencv
    conda update conda
    conda install --channel menpo opencv
    
    或(对于OpenCV 3.1):

    2.如果不想这样做,可以尝试使用matplotlib

    import cv2
    import matplotlib.pyplot as plt
    
    img = cv2.imread('img.jpg',0)
    
    plt.imshow(img, cmap='gray')
    plt.show()
    
    3.或者尝试使用选项
    和_GTK=ON
    ,或类似的smth,自行构建库


    更新-2019年6月18日

    我在openCV 3.4.2的Ubuntu(18.04.1 LTS)系统上遇到这个错误,因为对cv2.imshow的方法调用失败。我用的是蟒蛇。以下两个步骤帮助我解决了以下问题:

    conda remove opencv
    conda install -c conda-forge opencv=4.1.0
    
    如果您正在使用pip,您可以尝试

    pip install opencv-contrib-python
    

    如果您在任何时候使用OpenCV python pip包安装OpenCV,请注意以下注意事项,摘自


    重要提示 MacOS和Linux控制盘目前有一些限制:

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

    还要注意,要从另一个源安装,首先必须删除opencv python包,请注意,它正在抱怨libgtk2.0-dev和pkg-config。这是解决办法。卸载现有的openCV安装

    康达拆下开口CV3

    在安装opencv之前安装这些软件包- 康达安装gtk2组件配置

    现在从menpo安装opencv conda安装-c opencv3(Arch Linux、Anaconda with Python 3.6)对我来说,从建议的频道
    menpo
    loopbio
    安装并没有改变任何东西。我的解决办法是

  • 安装pkg配置(
    sudo pacman-Syu pkg config
  • 从环境中删除opencv(
    conda remove opencv
    )和
  • 从conda forge频道重新安装opencv(
    conda安装-c conda forge opencv

  • conda list
    现在返回
    opencv3.3.0 py36_blas_openblas_203[blas_openblas]conda forge
    并且所有使用cv2启动的窗口都工作正常。

    我使用pip安装了opencv python。()

    1) 从conda中删除opencv包:

    >> conda remove opencv
    
    2) 在env.yml文件中添加以下内容:

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

    从anaconda中删除opencv=

    康达删除opencv

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

    pip安装opencv


    这对我来说很有效。

    我已经处理了好几次这个问题,这就是迄今为止一直有效的方法:

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

    我的环境是Win10,我将anaconda路径添加到环境变量的路径中,cv2.imshow运行正常

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

    然后重新启动windows

    ,尽管这已经得到了回答,但对我来说,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)

    现在让我们检查一下imshow是否有效。在终端中,激活测试环境并启动python。在口译员中,执行以下操作:

    import cv2
    import matplotlib.pyplot as plt # hack 2
    img = cv2.imread('your_image_file',0)
    cv2.imshow('image',img)
    
    这将弹出一个显示图像的窗口。我没有进一步研究这是如何解决这个问题的

    注1:您可能会在.bashrc文件中看到一些与xkb相关的错误

    导出QT\u XKB\u CONFIG\u ROOT=/usr/share/X11/XKB

    注2:您可能会看到一些与XDG_RUNTIME_DIR相关的错误,然后在.bashrc文件中也添加了

    导出XDG_运行时_目录=.tmp/myruntime
    并通过mkdir-p.tmp/myruntime定义myruntime

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

    pip安装opencv python==3.4.5.20

    pip安装opencv contrib python==3.4.5.20

    如果正在写入图像并显示它,则可能需要执行以下操作

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

    如果您想知道如何从Docker获得显示,可以通过您主机中的X11为我的系统(Ubuntu18.04)执行以下操作。
    第一:

    sudo apt获得更新-y

    苏多美联社
    conda install matplotlib
    
    import cv2
    import matplotlib.pyplot as plt # hack 2
    img = cv2.imread('your_image_file',0)
    cv2.imshow('image',img)
    
    pip3 uninstall opencv-python
    
    pip3 install opencv-python
    
    pip uninstall opencv-python
    pip install opencv-python==4.1.2.30