コード例 #1
0
	def cbGetApriltagDetections(self,params):
		# print(params)
		if self.image_msg == None:
			return GetApriltagDetectionsResponse()
		if hasattr(self.image_msg,'format'): # CompressedImage
			try:
				cv_image = bgr_from_jpg(self.image_msg.data)
			except ValueError as e:
				rospy.loginfo('Anti_instagram cannot decode image: %s' % e)
				return
		else: # Image
			cv_image = self.bridge.imgmsg_to_cv2(self.image_msg, desired_encoding="bgr8")
		self.pub_raw.publish(self.bridge.cv2_to_imgmsg(cv_image, "bgr8"))
		# rect_image = cv_image
		rect_image = self.rector.rect(cv_image)
		self.pub_rect.publish(self.bridge.cv2_to_imgmsg(rect_image,"bgr8"))
		tags = self.detector.detect(rect_image)
		if self.visualization:
			for tag in tags:
				for idx in range(len(tag.corners)):
					cv2.line(rect_image, tuple(tag.corners[idx-1, :].astype(int)), tuple(tag.corners[idx, :].astype(int)), (0, 255, 0))
				# cv2.putText(rect_image, "中文测试", # not work
				cv2.putText(rect_image, str(tag.tag_id),
							org=(tag.corners[0, 0].astype(int)+10,tag.corners[0, 1].astype(int)+10),
							fontFace=cv2.FONT_HERSHEY_SIMPLEX,
							fontScale=0.8,
							color=(0, 0, 255))
			imgmsg = self.bridge.cv2_to_imgmsg(rect_image,"bgr8")
			self.pub_detections.publish(imgmsg)			
		return self.toApriltagDetections(tags)
コード例 #2
0
 def cbGetApriltagDetections(self, params):
     # print(params)
     if self.cv_image != None:
         rect_image = self.rector.rect(self.cv_image)
         # self.pub_rect.publish(self.bridge.cv2_to_imgmsg(rect_image,"bgr8"))
         tags = self.detector.detect(rect_image)
         if self.visualization:
             for tag in tags:
                 for idx in range(len(tag.corners)):
                     cv2.line(rect_image,
                              tuple(tag.corners[idx - 1, :].astype(int)),
                              tuple(tag.corners[idx, :].astype(int)),
                              (0, 255, 0))
                 # cv2.putText(rect_image, "中文测试", # not work
                 cv2.putText(rect_image,
                             str(tag.tag_id),
                             org=(tag.corners[0, 0].astype(int) + 10,
                                  tag.corners[0, 1].astype(int) + 10),
                             fontFace=cv2.FONT_HERSHEY_SIMPLEX,
                             fontScale=0.8,
                             color=(0, 0, 255))
             imgmsg = self.bridge.cv2_to_imgmsg(rect_image, "bgr8")
             self.pub_detections.publish(imgmsg)
         return self.toApriltagDetections(tags)
     return GetApriltagDetectionsResponse()
コード例 #3
0
	def toApriltagDetections(self,tags):
		msg = GetApriltagDetectionsResponse()
		for tag in tags:
			r = R.from_dcm(np.array(tag.pose_R))
			offset = np.array(tag.pose_t)*100
			euler = r.as_euler('xyz', degrees=True)
			detection = ApriltagPose(id=tag.tag_id,pose_r=euler,pose_t=offset)
			msg.detections.append(detection)
		return msg
コード例 #4
0
 def toApriltagDetections(self):
     msg = GetApriltagDetectionsResponse()
     items = self.detector.detections
     for item in items:
         detection = ApriltagPose(id=item[0],
                                  pose_r=item[1],
                                  pose_t=item[2])
         msg.detections.append(detection)
     return msg
コード例 #5
0
    def cbGetApriltagDetections(self, params):
        # res = self.get_frame(GetFrameRequest())
        # res = self.get_frame(GetFrameRequest([320,240]))
        # self.image_msg = res.image
        # print(params)
        image_msg = self.image_msg
        if image_msg == None:
            return GetApriltagDetectionsResponse()
        rect_image = toImage(image_msg)
        resized_image = cv2.resize(rect_image, (640, 480))
        # image_gray = cv2.cvtColor(resized_image, cv2.COLOR_BGR2GRAY)
        self.detector.detect(resized_image, label_tags=self.visualization)
        if self.visualization:
            resized_image = cv2.resize(resized_image, (480, 360))
            self.pubImage(resized_image)

        return self.toApriltagDetections()