コード例 #1
0
    def _msg_cb(self, msg):
        rects, count = self.non_max_suppression_handler(msg.rects, self.thre)

        rects_msg = RectArray()
        rects_msg.header = msg.header
        rects_msg.rects = rects
        self.pub_rects.publish(rects_msg)

        count_msg = Int64()
        count_msg.data = count
        self.pub_count.publish(count_msg)
コード例 #2
0
 def _apply(self, img_msg):
     bridge = cv_bridge.CvBridge()
     img = bridge.imgmsg_to_cv2(img_msg, desired_encoding='bgr8')
     rects = []
     dlib.find_candidate_object_locations(img, rects, min_size=self.min_size)
     ros_rect_array = RectArray()
     ros_rect_array.header = img_msg.header
     for d in rects:
         if (d.right() - d.left()) * (d.bottom() - d.top()) > self.max_size:
             continue
         cv2.rectangle(img, (d.left(), d.top()), (d.right(), d.bottom()), (255, 0, 0), 3)
         ros_rect_array.rects.append(Rect(x=d.left(), y=d.top(), width=d.right() - d.left(), height=d.bottom() - d.top()))
     imgmsg = bridge.cv2_to_imgmsg(img, encoding='bgr8')
     self.debug_pub_.publish(imgmsg)
     self.pub_.publish(ros_rect_array)
コード例 #3
0
 def _apply(self, img_msg):
     bridge = cv_bridge.CvBridge()
     img_bgr = bridge.imgmsg_to_cv2(img_msg, desired_encoding='bgr8')
     img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
     rects = []
     dlib.find_candidate_object_locations(img_rgb, rects,
                                          min_size=self.min_size)
     ros_rect_array = RectArray()
     ros_rect_array.header = img_msg.header
     for d in rects:
         if (d.right() - d.left()) * (d.bottom() - d.top()) > self.max_size:
             continue
         cv2.rectangle(img_bgr, (d.left(), d.top()), (d.right(), d.bottom()), (255, 0, 0), 3)
         ros_rect_array.rects.append(Rect(x=d.left(), y=d.top(), width=d.right() - d.left(), height=d.bottom() - d.top()))
     imgmsg = bridge.cv2_to_imgmsg(img_bgr, encoding='bgr8')
     self.debug_pub_.publish(imgmsg)
     self.pub_.publish(ros_rect_array)
コード例 #4
0
    def callback(self, imgmsg):
        raw_image = None
        self.image_width = imgmsg.width
        self.image_height = imgmsg.height
        try:
            raw_image = self.bridge.imgmsg_to_cv2(imgmsg,
                                                  desired_encoding='bgr8')
        except:
            rospy.logerr('failed transform image')
            return

        dataset = ImageDataset(pkg_dir,
                               raw_image,
                               self.templates_dir,
                               thresh=self.thresh,
                               image_name=str(imgmsg.header.stamp))

        scores, w_array, h_array, label_list = calculate_scores(
            self.model, dataset)
        boxes, indices = nms(scores, w_array, h_array, dataset.thresh,
                             label_list)
        output_image = plot_results(dataset.image_raw,
                                    boxes,
                                    label_list,
                                    indices,
                                    show=False,
                                    save_name=None)

        labels_msg = LabelArray()
        rects_msg = RectArray()
        original_size_rects_msg = RectArray()
        for i in range(len(indices)):
            rect_msg = Rect()
            label_msg = Label()
            original_size_rect_msg = Rect()

            box = boxes[i][None, :, :][0]

            x, y, width, height = self.check_out_of_image(box)
            rect_msg.x = x
            rect_msg.y = y
            rect_msg.width = width
            rect_msg.height = height

            original_size_rect_msg.x = x * 1 / self.resize_scale
            original_size_rect_msg.y = y * 1 / self.resize_scale
            original_size_rect_msg.width = width * 1 / self.resize_scale
            original_size_rect_msg.height = height * 1 / self.resize_scale

            # rect_msg.x = box[0][0]
            # rect_msg.y = box[0][1]
            # rect_msg.width = box[1][0] - box[0][0]
            # rect_msg.height = box[1][1] - box[0][1]

            label_msg.name = label_list[indices[i]]
            rects_msg.rects.append(rect_msg)
            labels_msg.labels.append(label_msg)
            original_size_rects_msg.rects.append(original_size_rect_msg)

        rects_msg.header = imgmsg.header
        labels_msg.header = imgmsg.header
        original_size_rects_msg.header = imgmsg.header

        self.labels_pub.publish(labels_msg)
        self.rects_pub.publish(rects_msg)
        self.original_size_rects_pub.publish(original_size_rects_msg)

        msg_viz = cv_bridge.CvBridge().cv2_to_imgmsg(output_image,
                                                     encoding='bgr8')
        msg_viz.header = imgmsg.header
        self.pub_viz.publish(msg_viz)