zoukankan      html  css  js  c++  java
  • ubuntu---opencv使用时报错:Rebuild the library with Windows, GTK+ 2.x or Carbon support.

    成功安装完opencv后,使用时报错:Rebuild the library with Windows, GTK+ 2.x or Carbon support.

    """""

    Loading weights from ./weights/yolov3.weights...Done!
    data/dog.jpg: Predicted in 0.143663 seconds.
    dog: 100%
    car: 27%
    truck: 92%
    bicycle: 99%
    terminate called after throwing an instance of 'cv::Exception'
      what():  OpenCV(3.4.2) /home/jupiter/opencv-3.4.2/modules/highgui/src/window.cpp:615:

    error: (-2: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 function 'cvNamedWindow'

    """


    如果opencv安装时,WITH_GTK=OFF -D WITH_GTK_2_X=OFF :
    #cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2 -D OPENCV_EXTRA_MODULES_PATH=/home/jupiter/opencv-3.4.2/opencv_contrib-3.4.2/modules -D WITH_GTK=OFF -D WITH_GTK_2_X=OFF ..
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2 -D OPENCV_EXTRA_MODULES_PATH=/home/jupiter/opencv-3.4.2/opencv_contrib-3.4.2/modules -D WITH_GTK=OFF -D WITH_GTK_2_X=OFF ..


    则重装opencv,修改 WITH_GTK=ON -D WITH_GTK_2_X=ON :
    #cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2 -D OPENCV_EXTRA_MODULES_PATH=/home/jupiter/opencv-3.4.2/opencv_contrib-3.4.2/modules -D WITH_GTK=ON -D WITH_GTK_2_X=ON ..
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2 -D OPENCV_EXTRA_MODULES_PATH=/home/jupiter/opencv-3.4.2/opencv_contrib-3.4.2/modules -D WITH_GTK=ON -D WITH_GTK_2_X=ON ..

    #cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2 -D OPENCV_EXTRA_MODULES_PATH=/home/jupiter/opencv-3.4.2/opencv_contrib-3.4.2/modules -D WITH_GTK=ON -D WITH_GTK_2_X=ON ..
    
    
    或者简单点:
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2 -D OPENCV_EXTRA_MODULES_PATH=/home/jupiter/opencv-3.4.2/opencv_contrib-3.4.2/modules ..

    另外,在pencv安装前,要先安装一些依赖项目:
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo apt-get install build-essential
    $ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    $ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
    $ sudo apt-get install libxvidcore-dev libx264-dev
    $ sudo apt-get install libatlas-base-dev gfortran
    $ sudo apt-get install ffmpeg #很重要,读视频,显示视频

    注意:

    自定义的路径:CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.2  ,后续会遇到一些小问题。
    推荐,默认路径:CMAKE_INSTALL_PREFIX=/usr/local

     @https://www.cnblogs.com/bitbyte/archive/2012/10/28/2744035.html

    sudo apt-get install libgtk2.0-dev
    安装libgtk2.0-dev不顺利的话,可以尝试aptitude的方法解决:
    sudo aptitude install libgtk2.0-dev

    sudo: aptitude:找不到命令
    jupiter@jupiter-Default-string:~$ sudo apt-get install aptitude
    网上给出的相关解释:
    ----------------------------------------------------------- 在网上搜索到有些解决办法是更改软件源(比如https:
    //www.cnblogs.com/zeze/p/linux1.html),但是修改完后还是不行。 参考其他博客发现,libgtk2.0-dev依赖得部分库需要一个比较老的版本。所以,这里使用如下命令: sudo aptitude install libgtk2.0-dev 将较新的库降级为满足依赖关系的库,按照提示逐步操作即可。 运行后会出现一大堆消息,给出第一个解决方案一般是保留这些库文件,让选择y/n/q?,这里选择“n”;
    然后会继续找解决方案,有时会超时找不到,点击y继续找,直到给出得解决方案是“降级”这些库文件,选择“y”,然后等待结束就完了。 完成后可以再输入“sudo aptitude install libgtk2.
    0-dev”进行测试,出现已经安装对应得库文件,说明安装成功了。(此方法同样适用于安装opencv时其他不能正常安装的预备库文件)
    -----------------------------------------------------------
    原因分析:
    出现上述错误是因为目前使用的源的版本比较低,而要安装的软件的依赖的版本的较高,因此方法只能是更换源

    这种问题就应该是软件源的问题,源中的版本比较低;依赖的版本号比正要安装的版本号要低导致没法安装。
    只需要将原来软件源删除,用新的软件源替换一下就可以了。

    sudo gedit /etc/apt/sources.list

    deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
    deb http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
    deb http://archive.canonical.com/ubuntu xenial partner
    deb-src http://archive.canonical.com/ubuntu xenial partner
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

    写上软件源后,再刷新一下,注意一定要刷新,运行:
    sudo apt-get update
    尝试了不好使。内核还给顺便升级了,原来 4.15.0-29 升级成了4.15.0-88,导致驱动不好使了。

    aptitude 会对依赖关系进行智能处理,aptitude 会重新计算可行方案,包括对已存在的包进行降级等。

    pkg-config是一个用来管理包的程序,在控制台输入 pkg-config --cflags --libs gtk+-2.0,可以发现
    输出的文本包括了gcc编译gtk+2.0所需要的所有选项(头文件目录和库文件)。 

    附:

    aptitude 与 apt-get
    
    aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。
    与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。
    举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。 以下是笔者总结的一些常用 aptitude 命令,仅供参考。 命令作用 aptitude update  更新可用的包列表   aptitude upgrade   升级可用的包   aptitude dist
    -upgrade     将系统升级到新的发行版   aptitude install pkgname 安装包   aptitude remove pkgname 删除包   aptitude purge pkgname 删除包及其配置文件   aptitude search string 搜索包   aptitude show pkgname 显示包的详细信息   aptitude clean 删除下载的包文件   aptitude autoclean 仅删除过期的包文件 有的问题 apt-get 解决不了,必须使用 aptitude 解决,有的问题,用 aptitude 解决不了,必须使用apt-get. aptitude 解决得更好的地方: install, remove, reinstall(apt-get无此功能), show(apt-get无此功能), search(apt-get无此功能), hold(apt-get无此功能), unhold(apt-get无此功能), apt-get 解决得更好的地方: source(aptitude无此功能), build-dep (低版本的aptitude没有build-dep功能) apt-get 跟 aptitude 没什么区别的地方:update, upgrade (apt-get upgrade=aptitude safe-upgrade, apt-get dist-upgrade=aptitude full-upgrgade)

    @https://www.cnblogs.com/klcf0220/p/10242810.html
  • 相关阅读:
    常用工具类
    手机端加载中
    jeecg的各种坑
    资源
    idea 破解后无法启动,我的配置文件搞错了
    eclipse xml 报某某.xsd找不到
    linux上部署svn服务器
    苹果手机微信浏览器无法通过post提交form数据
    %%%
    AtCoder arc060_d
  • 原文地址:https://www.cnblogs.com/carle-09/p/12377707.html
Copyright © 2011-2022 走看看