【发布时间】:2016-03-11 04:47:55
【问题描述】:
我是 Ubuntu 和 OpenCV 的新手。为我的业余行为道歉。
我想我搞砸了 OpenCV 安装。
我在 2.4 个月前安装了 OpenCV。安装成功(使用CMake从源码构建openCV)
几天前,我也使用相同的程序安装了 OpenCV 3.0。 当我的一个代码似乎无缘无故出现分段错误时,问题就开始了。根据 Caffe 神经网络问题论坛 (https://github.com/BVLC/caffe/issues/3416) 上的一位朋友的建议,我似乎正在使用 3.0 标头进行编译,但链接的是 2.4 库。
我检查了 /usr/local/include。它有标准的 openCv 头文件(我不明白'用 3.0 头文件编译是什么意思')
在 /usr/local/lib 我有 OpenCV 3.0 库(根本没有 2.4.8)。
现在编译成功了,但是当我尝试运行它时,我得到了以下错误。
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff76c49bc in cv::merge(cv::_InputArray const&,
cv::_OutputArray const&) ()
from /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4
只是添加
"pkg-config --modversion opencv" 3.0.0
而 dpkg -l | grep libopencv 放弃了
i libopencv-calib3d-dev:amd64 2.4.8+dfsg1-2ubuntu1 用于 libopencv-calib3d 的 amd64 开发文件 ii libopencv-calib3d2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64计算机视觉相机标定库 ii libopencv-contrib-dev:amd64 2.4.8+dfsg1-2ubuntu1 用于 libopencv-contrib 的 amd64 开发文件 .......
q.1> 为什么我的代码链接到 libopencv_core.so.2.4 而不是 3.0。我已签入 /usr/local/lib 并没有看到一个 2.4 库。我尝试在 CMake 中手动定义指向头文件和库的链接,但结果仍然相同。
q.2> OpenCV 头文件有版本号吗?我不明白它们是如何被称为“2.4 标头”的。我检查了源代码,但没有看到对库版本的任何特定要求。那么是什么要求链接到 2.4 版本的库呢?
对不起,如果这是理论上的,但这对像我这样的初学者非常有益。如果当前问题标题不合适,请对合适的问题标题进行评论。
谢谢
【问题讨论】: