写在前面
自己的测试环境:
Ubuntu20.04
OpenCV 4.5.4 (源码安装的,默认安装路径在 /usr/local/
下)
一、问题描述
编译调用 OpenCV
的程序时,遇到如下报错:
error: ‘cv::SIFT’ has not been declared
30 | detector_ = cv::SIFT::create();
‘USAC_ACCURATE’ is not a member of ‘cv’
239 | t_vec, true, 500, 2.0, 0.999, inliers_pnp, cv::USAC_ACCURATE);
二、解决方法
出现这个报错的原因首先是 OpenCV
版本太低导致的。因此自己从 OpenCV4.2.0
升级到了OpenCV 4.5.4
,但是依旧出现这个报错,经过查找资料,如下解决方法:
首先需要将OpenCV
版本升级到 OpenCV 4.5.0
以上,然后进行如下修改:
sudo gedit /opt/ros/noetic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
将文件中的94-96
行:
if(NOT "include;/usr/include/opencv4 " STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/usr/include/opencv4")
修改为:
if(NOT "include;/usr/local/include/opencv4 " STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/usr/local/include/opencv4")
然后再次进行编译,应该可以编译通过。
参考链接
[1] YukunXia. SuperPoint-Stereo-Visual-Odometry/tree/test_two_batches/src/odml_visual_odometry/README.md. https://github.com/YukunXia/SuperPoint-Stereo-Visual-Odometry/blob/test_two_batches/src/odml_visual_odometry/README.md, 2021-11-25/2024-07-09.