ORBSLAM3中一些opencv4的遗留问题(LOAD_IMREAD_UNCHANGED报错,CV_BGR2GRAY报错)
小车环境:Ubuntu18.04ROS melodic Opencv 4.1.0 xtark机器人 Nvidia Jetson。
项目场景:ORBSLAM3_ROS编译
在智能车环境中编译ORBSLAM3,并试图调用ROS接口
小车环境:Ubuntu18.04 ROS melodic Opencv 4.1.0 xtark机器人 Nvidia Jetson
其实最方便的做法应该是交叉编译,但是目前我的虚拟机和小车的opencv,boost库的版本对不上,盲目交叉编译肯定会有很多问题
所以暂时把目标又放在了小车编译上
问题描述
编译时报错:error:'CV_BGR2GRAY' was not declared error:'CV_LOAD_IMREAD_UNCHANGED' was not declared
同时,还有cmakelists报错:opencv not found
例如: in map.cc 498,9
//cout << "KF " << pKFi->mnId << endl;
cv::Mat img_i = cv::imread(pKFi->mNameFile,CV_LOAD_IMREAD_UNCHANGED);
//cout << "Image -> " << img_i.cols << ", " << img_i.rows << endl;
cv::cvtColor(img_i, img_i,CV_COLOR_BGR2GRAY);
}
原因分析:
原因就是opencv4已经不支持这些古老的宏定义了。但是ORBSLAM3依然使用,而且文档里并没有说不能使用opencv4编译
解决方案:
解决方案有两种
第一种是把代码文件的头文件修改成原来的带有c宏定义的头文件
比如添加opencv2/imgproc/imgproc_c.h opencv2/highgui/highgui_c.h
第二种就是将src中代码文件的相关宏定义都修改一边,这样一劳永逸,比较推荐
| 原始 | 修改成 |
|---|---|
| CV_LOAD_IMREAD_UNCHANGED | cv::IMREAD_UNCHANGED |
| CV_BGR2GRAY | cv::COLOR_BGR2GRAY |
| CV_REDUCE_SUM | cv::REDUCE_SUM |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)