ubuntu 16.04+OpenCV 3.2.0 运行samples: 如pnp_detection

本篇博客主要是记录一下自己在Ubuntu环境下如何编译OpenCV,并且跑通samples文件夹中的样例,之前一直遇到undefined reference to xxx的问题,试了好久,都不能使其执行,现在终于可以了!!(撒花) 以前都是在Windows上借助CMake对OpenCV进行configure, generate,然后使用Visual Studio生成解决方案,install等。现在使用ubuntu环境,还是需要适应一下。

方法如下:

  1. 常规的,从OpenCV官网下载对应的OpenCV版本,网址为:https://opencv.org/releases/
  2. 注意,如果此时直接在terminal中mkdir build; cd build; cmake … 和make -j8时,可以通过,但是默认的设置是没有对BUILD_EXAMPLES打勾的。采取的解决方案是:下载cmake-gui, 然后手动选择
  3. cmake-gui的安装方式:sudo apt-get cmake-gui即可。随后将其打开
  4. 将BUILD_EXMAPLES选项打上勾,其余的内容可以按照自己需求进行选择
    cmake选项
  5. 选择完成以后,可以点击configure和generate
  6. 上述步骤完成后,重新进入opencv的build文件夹,从此处打开terminal。输入指令cmake …和 make -j8即可看到会对tutorials, examples等内容进行编译。注意,如果出现make -j8时运行到35%时就自动退出了的情况,使用sudo make -j8就可以继续往下执行(不知道为什么,,,后续深入学习以后来填坑)
  7. 上述步骤完成后,根据《视觉SLAM十四讲》的建议,执行sudo make install将Opencv安装到机器上
  8. 判断上述步骤6、7的方法是否成功的检验方法:
    bin目录
    只需要看build/bin这个子目录下面是否有对应的cpp-tutorial-等可执行文件即可。如果不选择BUILD_EXAMPLES,这些可执行文件是不会被默认生成的
  9. 成功后,点击cpp-tutorial-pnp_detection可执行文件来查看效果
    在这里插入图片描述在这里插入图片描述
    接下来就可以舒舒服服的看代码啦!!

如果想要自己从头开始编译cpp-tutorial_pnp_detection项目

  1. 将整个real_time_pose_estimation拷贝出来,然后修改CMakeLists.txt文件,这里的修改是指将opencv/samples/cpp/example_cmake目录下的CMakeLists.txt文件和real_time_pose_estimation目录下的CMakeLists.txt文件中的内容进行整合。因为前者包含了具体的项目生成语句,后者包含了real_time_pose_estimation项目中pnp_detection项目所使用的cpp, h文件等
  2. 如果直接这样就直接运行,cmake可以通过,但是make -j8 时就会出现很多undefined reference xxx问题。很明显,这是由于链接文件不正确导致。即{OPENCV_CPP_SAMPLES_REQUIRED_DEPS}和{OPENCV_LINKER_LIBS}两个变量
  3. 尝试将这两个变量使用message语句输出。会发现前者为空,后者有值。此时,接下来的操作就很直接了。将OPENCV_CPP_SAMPLES_REQUIRED_DEPS的值拷贝set一下即可,具体OPENCV_CPP_SAMPLES_REQUIRED_DEPS值见下
  4. set(OPENCV_CPP_SAMPLES_REQUIRED_DEPS
    opencv_core
    opencv_imgproc
    opencv_flann
    opencv_imgcodecs
    opencv_videoio
    opencv_highgui
    opencv_ml
    opencv_video
    opencv_objdetect
    opencv_photo
    opencv_features2d
    opencv_calib3d
    opencv_stitching
    ${OPENCV_MODULES_PUBLIC}
    ${OpenCV_LIB_COMPONENTS})
  5. 接下来就可以直接cmake, make通过了
    cmake和make成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值