我有一台带有板载 Intel 显卡的笔记本电脑。多年来我一直在这台机器上使用 OpenCV,到目前为止我已经设法避免了手动编译。但在 Ubuntu 13.10 中,当我尝试libopencv-dev
从存储库安装时,它会带来libopencv-ocl
,这似乎依赖于 nvidia 驱动程序。让驱动程序安装会完全弄乱我的 xserver,当我glxinfo
之后这样做时,我得到了这个:
name of display: :0.0
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Error: couldn't find RGB GLX visual or fbconfig
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
为了解决这个问题,我清除了所有 nVidia 驱动程序并重新安装了 xserver,就像有人建议的那样这里,当我清除 nvidia 驱动程序时,OpenCV 开发库也会被删除,因为apt-get
告诉我它们是no longer needed
。这对我来说很陌生,因为我预计会收到警告,说我安装了依赖于此的软件包,但是删除依赖项如何自动删除我安装的软件包而不发出警告或询问?我知道这与 nVidia 是libopencv-ocl
repo 中的 的提供商有关。我该如何解决这个问题?如果可以的话,我宁愿不编译 OpenCV。我见过类似问题,但不是一个合适的答案。
答案1
我遇到了同样的问题,为了解决这个问题,你可以安装 libopencl1 的替代提供程序。如果没有适用于你的特定显卡的提供程序(即,存储库中似乎没有适用于 AMD/ATI 的提供程序),你可以使用通用的提供程序:
sudo apt-get install ocl-icd-libopencl1
如果您已经安装了 libopencv-dev,您还需要删除它带来的冗余包:
sudo apt-get autoremove
对我来说,默认引入 Nvidia 提供程序而不是通用提供程序似乎很奇怪 - 也许某些打包向导可以解决这个问题。
这里有一个与此问题相关的错误: https://bugs.launchpad.net/ubuntu/+source/opencv/+bug/1245260
答案2
sudo apt-get install libopencv-highgui-dev
然后从源代码进行编译,这也有一个好处,即可以使用 SIFT 和 SURF 非自由模块。