问题描述
我正在运行Kubuntu 11.10(带有KDE 4.8)
在阅读所有这些内容之前:
我只想从系统中删除所有OpenCV痕迹,所以我可以重新开始。
整个故事
很久以前,我首先从https://launchpad.net/~gijzelaar/+archive/opencv2安装了python-opencv和libopencv(我认为是2.1)。那时我只尝试了python-opencv,效果很好(我没有尝试使用OpenCV使用C++代码)
然后我最近尝试从源代码安装OpenCV 2.3.1,该源已安装,但是在编译我自己的C++代码(使用OpenCV)时,它给了我关于未安装libgtk的错误,并且还破坏了我之前运行良好的python opencv代码
因此,我安装了libgtk2-dev库,并再次编译并安装了OpenCV 2.3.1。
该错误仍然发生,因此我删除了从其中运行cmake,make等的OpenCV目录。我没有进行卸载(我现在意识到这是我的错误)
而是从此处安装了ubuntu opencv 2.3软件包(具有所有依赖项):https://launchpad.net/~gijzelaar/+archive/opencv2.3
现在的问题是,当我编译包含OpenCV的C++代码时,仍然遇到相同的错误,并且该错误仍然指向我的(已删除)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/anant/opencv/OpenCV-2.3.1/modules/highgui/src/window.cpp, line 275
terminate called after throwing an instance of 'cv::Exception'
what(): /home/anant/opencv/OpenCV-2.3.1/modules/highgui/src/window.cpp:275: 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
如您所见,错误仍然指向我编译和安装OpenCV的目录
有没有办法完全删除我的OpenCV编译版本的所有痕迹,并仅保留ubuntu软件包中的文件?正如我之前提到的,我没有’make uninstall’,并且(愚蠢地)删除了install-manifest
编辑:我再次运行了程序包管理器,发现不是所有的ppa opencv程序包都已正确安装。所以我做了一个sudo apt-get再次安装opencv,现在我得到这个错误:
Unpacking libopencv2.3 (from .../libopencv2.3_2.3.1-3_amd64.deb) ...
dpkg: error processing /var/cache/apt/archives/libopencv2.3_2.3.1-3_amd64.deb (--unpack):
trying to overwrite '/usr/lib/libopencv_video.so.2.3.1', which is also in package libopencv-video2.3 2.3.1-4ppa1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Unpacking opencv (from .../opencv_2.3.1-3_amd64.deb) ...
dpkg: error processing /var/cache/apt/archives/opencv_2.3.1-3_amd64.deb (--unpack):
trying to overwrite '/usr/bin/opencv_haartraining', which is also in package libopencv-core-dev 2.3.1-4ppa1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/libopencv2.3_2.3.1-3_amd64.deb
/var/cache/apt/archives/opencv_2.3.1-3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
我只想从系统中删除所有OpenCV痕迹,因此可以重新开始
最佳思路
默认情况下,从源代码构建OpenCV时,会将其输出放置在/usr/local/lib
和/usr/local/bin
中。尽管从错误消息来看,它似乎将库放置在/usr/lib
中,将二进制文件放置在/usr/bin
中,因此您也可以在其中检入。
您也可以使用Linux find命令。因此,要查找所有OpenCV库,您可以执行以下操作(这可能需要一段时间):
$> sudo find / -name "*opencv*" -exec rm -i {} \;
上面的命令将找到名称中包含opencv的任何文件,并提示您将其删除。与往常一样,手动删除内容时要小心!
另一个选择可能是再次手动编译OpenCV(与您之前所做的完全一样),使用make install
创建安装清单,然后尝试使用make uninstall
来查看其是否会自行清理。
希望有帮助! 🙂
次佳思路
如果您拥有构建目录,那么建议执行:
$ sudo make uninstall
从构建目录按照@Navid的答案
但这会在某个地方留下几个.so *文件
要完全删除所有此类文件,请执行以下操作:
$ sudo rm /usr/local/{bin,lib}/*opencv*
在运行cmake
时,通常将CMAKE_INSTALL_PREFIX
设置为/usr/local
。根据您执行cmake
的方式替换它
第三种思路
您可以执行sudo make uninstall
进行干净卸载