将YOLOV4移植到ROS中会面对的BUG补充

这是大佬的原创

https://blog.csdn.net/JIEJINQUANIL/article/details/106461895

,本博客是关于未匹配的函数的问题补充:具体情况是cv::Mat 和IplImage的转换问题,将YoloObjectDetector.cpp文件中的第518行(具体还要看你报错时候告诉你的行数)的函数替换为如下代码即可

IplImageWithHeader_ YoloObjectDetector::getIplImageWithHeader() {
  IplImage ROS_img = cvIplImage(camImageCopy_);

  IplImageWithHeader_ header = {.image = &ROS_img, .header = imageHeader_};
  return header;
}

后续-------------

可能各位不一定会添加未定义文件
我这里也给各位贴上了

set(DARKNET_CORE_FILES
    ${DARKNET_PATH}/src/activation_layer.c        ${DARKNET_PATH}/src/im2col.c
    ${DARKNET_PATH}/src/activations.c             ${DARKNET_PATH}/src/image.c
    ${DARKNET_PATH}/src/avgpool_layer.c           ${DARKNET_PATH}/src/layer.c
    ${DARKNET_PATH}/src/batchnorm_layer.c         ${DARKNET_PATH}/src/list.c
    ${DARKNET_PATH}/src/blas.c                    ${DARKNET_PATH}/src/local_layer.c
    ${DARKNET_PATH}/src/box.c                     ${DARKNET_PATH}/src/lstm_layer.c
    ${DARKNET_PATH}/src/col2im.c                  ${DARKNET_PATH}/src/matrix.c
    ${DARKNET_PATH}/src/connected_layer.c         ${DARKNET_PATH}/src/maxpool_layer.c
    ${DARKNET_PATH}/src/convolutional_layer.c     ${DARKNET_PATH}/src/network.c
    ${DARKNET_PATH}/src/cost_layer.c              ${DARKNET_PATH}/src/normalization_layer.c
    ${DARKNET_PATH}/src/crnn_layer.c              ${DARKNET_PATH}/src/option_list.c
    ${DARKNET_PATH}/src/crop_layer.c              ${DARKNET_PATH}/src/parser.c
    ${DARKNET_PATH}/src/dark_cuda.c                    ${DARKNET_PATH}/src/region_layer.c
    ${DARKNET_PATH}/src/data.c                    ${DARKNET_PATH}/src/reorg_layer.c
    ${DARKNET_PATH}/src/deconvolutional_layer.c   ${DARKNET_PATH}/src/rnn_layer.c
    ${DARKNET_PATH}/src/demo.c                    ${DARKNET_PATH}/src/route_layer.c
    ${DARKNET_PATH}/src/detection_layer.c         ${DARKNET_PATH}/src/shortcut_layer.c
    ${DARKNET_PATH}/src/dropout_layer.c           ${DARKNET_PATH}/src/softmax_layer.c
    ${DARKNET_PATH}/src/gemm.c                    ${DARKNET_PATH}/src/tree.c
    ${DARKNET_PATH}/src/gru_layer.c               ${DARKNET_PATH}/src/utils.c
    ${DARKNET_PATH}/src/upsample_layer.c          
    # ${DARKNET_PATH}/src/lylogistic_layer.c
    # ${DARKNET_PATH}/src/l2norm_layer.c            
    ${DARKNET_PATH}/src/yolo_layer.c

    ${DARKNET_PATH}/src/art.c                
    # ${DARKNET_PATH}/src/lsd.c
    # ${DARKNET_PATH}/src/attention.c          
    ${DARKNET_PATH}/src/nightmare.c
    ${DARKNET_PATH}/src/captcha.c            
    # ${DARKNET_PATH}/src/regressor.c
    ${DARKNET_PATH}/src/cifar.c              ${DARKNET_PATH}/src/rnn.c
    ${DARKNET_PATH}/src/classifier.c         
    # ${DARKNET_PATH}/src/segmenter.c
    ${DARKNET_PATH}/src/coco.c               ${DARKNET_PATH}/src/super.c
    ${DARKNET_PATH}/src/darknet.c            ${DARKNET_PATH}/src/tag.c
    ${DARKNET_PATH}/src/detector.c           ${DARKNET_PATH}/src/yolo.c
    ${DARKNET_PATH}/src/go.c

    #新加文件
    ${DARKNET_PATH}/src/image_opencv.cpp
    ${DARKNET_PATH}/src/conv_lstm_layer.c
    ${DARKNET_PATH}/src/gaussian_yolo_layer.c 
    ${DARKNET_PATH}/src/getopt.c
    ${DARKNET_PATH}/src/voxel.c
    ${DARKNET_PATH}/src/rnn_vid.c
    ${DARKNET_PATH}/src/sam_layer.c
    ${DARKNET_PATH}/src/detection_layer.c
    ${DARKNET_PATH}/src/dice.c
    ${DARKNET_PATH}/src/reorg_old_layer.c
    ${DARKNET_PATH}/src/compare.c
    ${DARKNET_PATH}/src/http_stream.cpp
    ${DARKNET_PATH}/src/writing.c
    ${DARKNET_PATH}/src/scale_channels_layer.c
)

set(DARKNET_CUDA_FILES
    ${DARKNET_PATH}/src/activation_kernels.cu     ${DARKNET_PATH}/src/crop_layer_kernels.cu
    ${DARKNET_PATH}/src/avgpool_layer_kernels.cu  ${DARKNET_PATH}/src/deconvolutional_kernels.cu
    ${DARKNET_PATH}/src/blas_kernels.cu           ${DARKNET_PATH}/src/dropout_layer_kernels.cu
    ${DARKNET_PATH}/src/col2im_kernels.cu         ${DARKNET_PATH}/src/im2col_kernels.cu
    ${DARKNET_PATH}/src/convolutional_kernels.cu  ${DARKNET_PATH}/src/maxpool_layer_kernels.cu
    # 新加文件
    ${DARKNET_PATH}/src/network_kernels.cu
)

BGM起!

### 回答1: 要将 YOLOv5 移植ROS 中,您需要执行以下步骤: 1. 安装 ROS:如果您还没有安装 ROS,请先安装它。 2. 安装 OpenCVROS 依赖于 OpenCV,因此您需要安装 OpenCV。 3. 编译 YOLOv5:您需要在 ROS 环境中编译 YOLOv5,以便它能够与 ROS 集成。 4. 创建 ROS 包:使用 catkin 工具创建一个新的 ROS 包,并在其中包含 YOLOv5 的二进制文件。 5. 编写代码:您需要编写代码来实现对视频流的处理,以及将 YOLOv5 的输出发布到 ROS 中。 6. 运行:最后,您可以使用 ROS 运行代码,以查看 YOLOv5 在 ROS 中的输出。 注意:以上步骤是一般的指导,具体实现过程可能会因您使用的系统和工具而异。 ### 回答2: 要将Yolov5移植ROS中,我们可以按照以下步骤进行: 1. 首先,确保在计算机上安装了ROS(Robot Operating System)。ROS是一个用于构建机器人软件的开源框架,提供了许多功能库和工具,方便了机器人开发。 2. 然后,从Yolov5的官方仓库中克隆代码。Yolov5是一个用于对象检测的深度学习模型,我们需要获取其代码以进行后续操作。 3. 修改Yolov5代码以适应ROS架构。根据ROS的需求,我们可能需要对Yolov5代码进行一些修改,以便与ROS的消息传递和软件结构相匹配。 4. 创建ROS package并导入Yolov5代码。使用ROS的package管理工具,我们可以创建一个新的ROS package,并将Yolov5的代码导入其中。 5. 配置ROS环境。在ROS package中,我们需要配置ROS环境,以便正确编译和运行Yolov5的代码。这可能包括创建ROS消息和服务,配置节点和话题等。 6. 构建和编译ROS package。通过ROS的构建系统,我们可以进行代码的编译和构建。这将生成可执行文件和库文件,以用于对象检测任务。 7. 运行Yolov5在ROS中。一旦编译成功,我们就可以在ROS中运行Yolov5的代码了。这可能涉及到启动ROS master节点、运行Yolov5节点,并将输入图像传递给Yolov5进行对象检测。 总结起来,将Yolov5移植ROS中需要克隆Yolov5代码,修改代码以适应ROS架构,创建ROS package并导入代码,配置ROS环境,构建和编译ROS package,最后在ROS中运行Yolov5的代码。完成这些步骤后,我们就可以在ROS中使用Yolov5进行对象检测了。 ### 回答3: 将Yolov5移植ROS中主要分为以下几个步骤: 步骤1:安装ROS 首先需要在目标计算机上安装ROS。可以从ROS官方网站下载适合你的操作系统的ROS版本,并按照官方的安装指南进行安装。 步骤2:设置工作空间 在ROS中,每个工程都需要一个工作空间。通过创建一个名为"catkin_ws"的文件夹来设置你的工作空间。在终端中使用以下命令: ``` mkdir -p catkin_ws/src cd catkin_ws catkin_make ``` 步骤3:下载Yolov5源码 将Yolov5的源码下载到ROS的工作空间的"src"目录中。可以使用Git命令进行克隆: ``` cd catkin_ws/src git clone https://github.com/ultralytics/yolov5.git ``` 步骤4:构建ROS包和节点 进入工作空间的根目录下,通过执行catkin_make命令来构建ROS包和节点: ``` cd catkin_ws catkin_make ``` 步骤5:修改Yolov5源码 在Yolov5源码中,将原始的Python脚本改为ROS节点。主要需要根据ROS的发布者和订阅者的机制,修改图像的输入和检测结果的输出。可以参考ROS的官方文档和Yolov5的源码进行修改。 步骤6:编译和运行 在终端中使用以下命令编译并运行ROS程序: ``` cd catkin_ws catkin_make source devel/setup.bash rosrun <包名> <节点名> ``` 其中"<包名>"和"<节点名>"需要根据你的实际情况进行替换。 通过完成以上步骤,你就成功将Yolov5移植ROS中了。可以在ROS中使用Yolov5进行目标检测等相关任务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值