[FishBotCamera]3.结合YOLO实现检测
-
@小鱼 大佬您好,我想订阅/yolo_result话题中的分类结果,
例如:header.detections.id中的值person,但是仔细研究发现您是把Detection2D接口信息嵌入到了Detection2DArray的detections[ ]中,我不知道该如何获取嵌入到detections[ ]的id的值,能否给些提示,或者更新一个案例。
我这是属于喂到嘴边不知道怎么下口去吃,尴尬。
-
@2826778595 这里有一个递归读取的方式,读取header.detections.id中的值person。
代码如下:
import rclpy
from rclpy.node import Node
from vision_msgs.msg import Detection2DArrayclass DetectionSubscriber(Node):
def init(self):
super().init('detection_subscriber')
self.subscription = self.create_subscription(
Detection2DArray, # 消息类型
'yolo_result', # 订阅的话题名称
self.listener_callback, # 回调函数
10 # 队列大小
)
self.subscription # prevent unused variable warningdef listener_callback(self, msg: Detection2DArray): self.get_logger().info('Received a Detection2DArray message') for detection in msg.detections: # 打印出每个检测到的对象的ID self.get_logger().info(f"Detected object ID: {detection.id}")
def main(args=None):
rclpy.init(args=args)
detection_subscriber = DetectionSubscriber()
rclpy.spin(detection_subscriber)
# 关闭和清理ROS 2节点
detection_subscriber.destroy_node()
rclpy.shutdown()if name == 'main':
main()
我个人觉得比较呆,期待有更好的方法。 -
import rclpy from rclpy.node import Node from vision_msgs.msg import Detection2DArray class DetectionSubscriber(Node): def __init__(self): super().__init__('detection_subscriber') self.subscription = self.create_subscription( Detection2DArray, # 消息类型 'yolo_result', # 订阅的话题名称 self.listener_callback, # 回调函数 10 # 队列大小 ) self.subscription # prevent unused variable warning def listener_callback(self, msg: Detection2DArray): self.get_logger().info('Received a Detection2DArray message') for detection in msg.detections: # 打印出每个检测到的对象的ID self.get_logger().info(f"Detected object ID: {detection.id}") def main(args=None): rclpy.init(args=args) detection_subscriber = DetectionSubscriber() rclpy.spin(detection_subscriber) # 关闭和清理ROS 2节点 detection_subscriber.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()
-
@2826778595 既然是数组,遍历读取就好,这个做法没啥问题
-
@小鱼 好嘞,谢谢。
-
新问题:
1、pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple yolov5 我把这行换成yolo8,代码里导入的包也是yolo8,可以运行yolo8的模型吗?
2、同时安装yolo5和8在Linux会产生冲突吗?
担心冲突,所以先问问。 -
小鱼,我在这一节里启动yolov5的时候提示警告不匹配版本该怎么解决呀,这个不匹配了在rqt里也看不到图像 -
@2431039560 我也遇到这个问题 请问你是如何解决的呢
-
@1004461581 摄像头和小车和电脑在同一个子网下就可以了,改一下IP最后面的那个数字
-
@2431039560是udpserver_ip吗,改了这个还是不行哎
-
@1004461581 发一下网络结构看看
-
@小鱼 感谢已经解决
-