如何在另一台计算机(linux)上使用OpenCV运行C++库?

问题描述:

我在Ubuntu 11.04中使用C++,OpenCV 2.2和g ++编写了一个小项目。我需要创建一个库(.so会更好),但我希望它可以在没有安装OpenCV的情况下在另一台计算机上运行。
我试过使用g ++的-shared和-fPIC标志来构建动态库,并将OpenCV .so库复制到工作目录中。其实我只需要core和feature2d,但实际上它需要很多其他库,包括highgui,它也有很多依赖关系。
我试过静态链接,使用-Wl,-Bstatic标志,但也不成功。 有人遇到同样的问题吗?我将不胜感激任何形式的帮助。如何在另一台计算机(linux)上使用OpenCV运行C++库?

+0

林静国王将不会很有用,因为highgui依赖于几个系统库。如果你不需要相机或视频阅读/写作,那么你可以关闭大部分依赖关系。如果这对你有效,那么我可以发布一个cmake命令来构建OpenCV,而不需要视频支持。 –

+0

是的,我根本不需要在这个项目中使用highgui,但是它被OpenCV的一个libriries使用。非常感谢,我会尝试你的解决方案。 – Gregory

可以在不依赖系统库的情况下构建OpenCV。要在Linux上的OpenCV的2.2把所有的依赖,你可以用以下参数运行cmake:

cmake -DWITH_1394=OFF -DWITH_CUDA=OFF -DWITH_EIGEN2=OFF -DWITH_FFMPEG=OFF -DWITH_GSTREAMER=OFF -DWITH_GTK=OFF -DWITH_OPENEXR=OFF -DWITH_PVAPI=OFF -DWITH_QT=OFF -DWITH_TBB=OFF -DWITH_UNICAP=OFF -DWITH_V4L=OFF -DWITH_XINE=OFF -DUSE_IPP=OFF -DOPENCV_BUILD_3RDPARTY_LIBS=ON .. 

但在这种情况下,你将不能够使用许多的功能,形成highgui模块:

  • 视频读写
  • 带摄像头的工作
  • 与GUI工作的所有功能(如imshow)
+0

看来'cv :: imencode'和'cv :: imdecode'也是'highgui'。 –

+0

然而,他们确实可以在没有系统库的情况下使用多种格式 –