鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    4.2.3人脸检测服务实现章节

    已定时 已固定 已锁定 已移动
    机器人学
    rso2 ros2 humble
    1
    1
    158
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      猹
      最后由 编辑

      e509d2e7-d36f-4582-98f3-e057062825a2-图片.png
      为什么下面一直在等待?

      源码
      import rclpy
      from rclpy.node import Node
      from chapt4_interfaces.srv import FaceDetector
      import face_recognition
      import cv2
      from ament_index_python.packages import get_package_share_directory #获取功能包share目录绝对路径
      import os
      from cv_bridge import CvBridge
      import time

      class FaceDetectNode(Node):
      def init(self):
      super().init('face_detect_node')
      self.service_ = self.create_service(FaceDetector,'face_detect',self.detect_face_callback)
      self.bridge = CvBridge()
      self.number_of_times_to_upsample = 1
      self.model = 'hog'
      self.default_image_path = os.path.join(get_package_share_directory('demo_python_service') ,'resource/default.jpeg')
      self.get_logger().info("人脸检测服务已经启动!")

      def detect_face_callback(self, request, response):
          if request.image.data:
              cv_image = self.bridge.imgmsg_to_cv2(request.image)
          else:
              cv_image = cv2.imread(self.default_image_path)
              self.get_logger().info(f"传入图像为空,使用默认图像")
          #cv_image 已经是一个opencv格式的图像了
          start_time = time.time()
          self.get_logger().info(f"加载完成图像,开始识别")
          #检测人脸
          face_locations = face_recognition.face_locations(cv_image,
          number_of_times_to_upsample=self.number_of_times_to_upsample,model=self.model)
          response.use_time = time.time() - start_time
          response.number = len(face_locations)
          self.get_logger().info(f"识别完成,耗时:{response.use_time}!秒")
          for top,right,bottom,left in face_locations:
              response.top.append(top)
              response.right.append(right)
              response.bottom.append(bottom)
              response.left.append(left)
          return response         #返回【reponse
      

      def main():
      rclpy.init()
      node = FaceDetectNode()
      rclpy.spin(node)
      rclpy.shutdown()

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS