OpenCV GTK+2.x 错误 - "Unspecified error (The function is not implemented...)"

OpenCV GTK+2.x error - "Unspecified error (The function is not implemented...)"

我按照这些步骤安装了 OpenCV。在尝试编译一个例子后,我得到了这个错误:

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/nick/.Apps/opencv/modules/highgui/src/window.cpp, line 516
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/nick/.Apps/opencv/modules/highgui/src/window.cpp:516: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.4)
project(threadTest)

find_package( OpenCV REQUIRED )


set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pthread")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/home/nick/ClionProjects/threadTest")

set(SOURCE_FILES main.cpp)
add_executable(threadTest ${SOURCE_FILES})
target_link_libraries( threadTest ${OpenCV_LIBS} )

我该如何解决?

首先检查libgtk2.0-dev是否安装正确。如果您已经安装了 aptitude 包管理器,运行 以下内容:

sudo aptitude search libgtk2.0-dev

应该return像这样:

i  libgtk2.0-dev              - development files for the GTK+ library
p  libgtk2.0-dev:i386         - development files for the GTK+ library

您需要重新构建文件。找到您的 OpenCV 文件夹。创建一个新文件夹并将其命名为 Release。进入这个文件夹。例如,

cd /home/user_name/OpenCv
mkdir Release
cd Release

现在使用 CMake 通过以下命令构建:

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 ..

记得在 CMake 中输入 WITH_GTK=ON

这一步之后,输入命令,

make
sudo make install

这应该可以解决您的问题。如果您破坏了 libgtk2.0-dev 的依赖关系,请使用 aptitude 安装 libgtk2.0-dev 的新副本。

sudo aptitude install libgtk2.0-dev

我预装了 Ubuntu 16.04 LTS (Xenial Xerus) environment with GTK 3。

我在 Caffe 构建(主分支)时遇到了同样的错误, 请尝试以下步骤,也许它适合您。

sudo apt-get install libgtk-3-dev
cmake .. (WITH_GTK=ON and other settings),
make

还有宾果游戏,错误消失了...在我的 Python Caffe 代码中

请注意:

CMake 配置应反映 GTK+ 3.x 而不是 GTK+ 2.x:

       GUI:
--     QT:                          NO
--     GTK+ 3.x:                    YES (ver 3.18.9)
--     GThread :                    YES (ver 2.48.2)
--     GtkGlExt:                    NO
--     OpenGL support:              NO
--     VTK support:                 NO

如果您使用 opencv-python pip 包安装了 OpenCV,请注意以下摘自 opencv-python 的注释:

IMPORTANT NOTE
macOS and Linux wheels have currently some limitations:

  • video related functionality is not supported (not compiled with FFmpeg)
  • 例如 cv2.imshow() 将不起作用(未使用 GTK+ 2.x 或 Carbon 支持编译)

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

为了在 Ubuntu 中安装 OpenCV,我遵循了这个指南,它运行得非常好:Ubuntu 16.04: How to install OpenCV

为了改进 我想通过三个简单的步骤解释如何在 macOS 上修复此错误。

  1. 删除已安装的 OpenCV 版本以避免以后搞砸

    pip3 uninstall opencv-python
    
  2. 将您的 Python 版本降低到 3.5(当前版本 3.6 与我们将用于安装 OpenCV 的 Conda 有问题)

    conda install python=3.5
    
  3. 最后,使用Conda安装OpenCV的工作版本

    conda install -c menpo opencv3
    

然后瞧瞧:OpenCV 将开始在您的 macOS 上运行 (macOS v10.12.4 (Sierra))。

我已通过更换

解决了这个问题
cvDestroyWindow("showImage");

来自

cvDestroyWindow("ShowImage");

我遇到了同样的问题,并通过 reinstalling opencv 简单地解决了它。

不需要先卸载

对我来说(Arch Linux,Anaconda Python 3.6),从建议的渠道 menpoloopbio 安装并没有改变任何东西。我的解决方案是

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

conda list 现在 returns opencv 3.3.0 py36_blas_openblas_203 [blas_openblas] conda-forge 并且使用 cv2 启动的所有 windows 都工作正常。

我已经使用 Anaconda 3 installing on Ubuntu 16.04 (Xenial Xerus) 解决了问题。

我的 Python 代码使用了 PyCharm 编辑器。

我使用的是 Python 3.6 版本。

我使用这些流程解决了问题。

IDEA:我们需要从 PyCharm.

安装包 opencv-contrib-python

我不得不处理这个问题几次,这是迄今为止一直有效的方法:

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

我尝试了几个以前的答案,在 ubuntu 中对我有用的答案在以下步骤中提到:

  1. 首先,通过在终端 conda remove opencv.
  2. 中输入以下命令,删除系统中安装的当前 opencv 软件包
  3. 如果您的 Python 版本是 3.6 或更高版本,则可以通过输入 conda install python=3.5.
  4. 将其更改为稳定版本。
  5. 稍后,通过在终端中输入以下内容再次安装 opencv 包 conda install -c menpo opencv3

如果前面的答案中提到的方法不起作用,请尝试:

pip install opencv-python

对于 Python 2,或

pip3 install opencv-python

Python3.

对于Windows,只需卸载OpenCV包:

pip uninstall opencv-python

并重新安装:

pip install opencv-python

在 Ubuntu 上使用 vcpkg 安装 OpenCV 后,vcpkg 存在一个已知问题,您最终会收到与此 post 顶部完全相同的错误消息,无法访问高贵:

OpenCV(4.3.0) Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support.
If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow,
file .../vcpkg/buildtrees/opencv4/src/4.3.0-0c6047baf6.clean/modules/highgui/src/window.cpp, line 634
Caught exception: OpenCV(4.3.0) .../vcpkg/buildtrees/opencv4/src/4.3.0-0c6047baf6.clean/modules/highgui/src/window.cpp:634:
error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support.

If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'

问题是 vcpkg 在构建 OpenCV 时传入了构建选项 -DWITH_GTK=OFF。未决问题:https://github.com/microsoft/vcpkg/issues/12621

解决方法如下:

  • 编辑文件vcpkg/ports/opencv4/portfile.cmake
  • 找到 -DWITH_GTK=OFF 行并将其更改为 -DWITH_GTK=ON
  • 运行 ./vcpkg remove opencv4
  • 运行 sudo apt-get install libgtk2.0-dev pkg-config
  • 使用 ./vcpkg install opencv4 或您使用的任何 vcpkg 命令重新安装 OpenCV

我的问题在安装 opencv-contrib-python 后解决了:

pip install opencv-contrib-python

我遇到了同样的问题,卸载 opencv-python 并重新安装后已解决。

pip uninstall opencv-python
pip install opencv-python

试试这个。它对我有用

sudo apt-get install cmake cmake-curses-gui libgtk2.0-dev
pip install opencv-contrib-python

使用上述命令重新安装和安装解决了我的问题,但在关闭所有 pyhton 和 anaconda 实例之后,因为显然我的系统中保留了该库的缓存版本。

因此,卸载 opencv(尝试使用 pip 和 conda),关闭 IDE 并重新启动它,检查是否可以导入 opencv。如果还可以导入,试试运行代码:

help(cv2)

并检查文件的存储位置并删除该文件夹。 重复该过程,直到您确定它已卸载,以便您可以重新安装 opencv 完整包(选项 2 - 参见 https://pypi.org/project/opencv-python/

我已经用这个解决了我的问题,试试吧

pip install opencv-python-headless==4.5.3.56 
pip install opencv-contrib-python==4.5.3.56
pip install opencv-python==4.5.3.56

我遇到了同样的问题,在卸载 opencv-python 版本 4 然后安装 OpenCV 版本 3 后已解决。

pip 安装opencv-python==3.4.9.33