我尝试安装一个ROS indigo
包jsk_agnition用于棋盘检测和相对位置,我在Ubuntu 14.04
上有opencv-3.0.0-rc1
。当我尝试catkin_make
包时,我收到了构建错误,退出了很多,完整的报告在这里,但它开始时是这样的:
[ 73%] Building CXX object
vision/jsk_recognition-master/jsk_perception/CMakeFiles/roi_to_mask_image.dir/roi_to_mask_image.cpp.o
/home/elod/catkin_ws/src/vision/jsk_recognition-master/jsk_perception/src/linemod.cpp:69:57:
error: ‘linemod’ is not a member of ‘cv’ std::vector<CvPoint>
maskFromTemplate(const std::vector<cv::linemod::Template>& templates,
^ /home/elod/catkin_ws/src/vision/jsk_recognition-master/jsk_perception/src/linemod.cpp:69:57:
error: ‘linemod’ is not a member of ‘cv’
/home/elod/catkin_ws/src/vision/jsk_recognition-master/jsk_perception/src/linemod.cpp:69:78:
error: template argument 1 is invalid std::vector<CvPoint>
maskFromTemplate(const std::vector<cv::linemod::Template>& templates,
^
/home/elod/catkin_ws/src/vision/jsk_recognition-master/jsk_perception/src/linemod.cpp:69:78:
error: template argument 2 is invalid
/home/elod/catkin_ws/src/vision/jsk_recognition-master/jsk_perception/src/linemod.cpp:69:57:
error: ‘linemod’ is not a member of ‘cv’ std::vector<CvPoint>
maskFromTemplate(const std::vector<cv::linemod::Template>& templates,
问题在于linemod
类,它在在线opencv文档中存在,但在我的情况下,编译器无法识别它。linemod.h
头文件在任何opencv文件夹中都找不到,只能在:中找到
./home/elod/catkin_ws/src/vision/jsk_recognition-master/jsk_pcl_ros/include/jsk_pcl_ros/linemod.h
./opt/ros/indigo/include/jsk_pcl_ros/linemod.h
./usr/include/pcl-1.7/pcl/recognition/linemod.h
这个模块是不是在我的OpenCV安装中丢失了一些东西,或者为什么在cv命名空间中找不到它?
在我的旧Opencv 2.4.11
(已卸载(中,seams将包含在这个模块中,但我将所有内容迁移到了3.0.0
中。
有什么解决办法吗?
更新一个非常重要的观察结果是,上面提到的pkg是针对Opencv2.4的,我使用的是3.0!一些内容已从新版本中移动或删除,如cvSnakeImage
,它也出现在本软件包中。
另一个问题是:如何更换cvSnakeImage
,或者用什么可以更换?
您是从零开始构建的吗(干净的构建目录(?
您可以尝试将cv::namespace添加到*.hpp 中
-<linemod::Match>
+<cv::linemod::Match>
和/或尝试将"#include <opencv2/rgbd/linemod.hpp>
"添加到同一文件中。