年前需要在ROS上使用YoloV4对道路上的障碍物进行检测,记得早期使用YoloV3的时候是用的Yolo开发团队提供的darknet版本,因此就自然而然的去下其提供的Ros节点包然后开搞。
结果由于当时操作了一波,使用的是Manjaro系统,ROS是自己编译的(OpenCV版本是4.5),结果花了一个晚上改了无数错误之后依然编译不过。最后一查才发现darknet架构在OpenCV3.4.0后(OpenCV在该版本后把c接口直接用c++实现了,可能最新的noetic二进制安装文件依然用的是OpenCV3.2就是为了兼容)的版本都支持不良,所以只能作罢。
从该情况看来,修改的办法有三个
-
从系统开始换,换成Ubuntu,也就等同于换了OpenCV版本。但本人实在是不喜欢Ubuntu,甚至当时都直接用Manjaro而放弃Ubuntu了,绝不可能再装回去!
-
直接换掉noetic的OpenCV版本,这个是很容易想到的方案,但本着用新不用旧的原则,本人也一点都不想选。
-
直接不用darknet架构了,这个是本人最后选的,结果却极其意外的发现OpenCV在4.4版本后直接在dnn模块上支持了YoloV4的架构,简直不要再开心!!!
于是事情变得非常简单,参考:https: