0

我正在编写一个 ROS2 项目。我从相机中获取图像并希望将其直播到网页。为此,我必须对其进行 Base64 编码并将其发送到网页。目前我这样做:

self.bridge = cv_bridge.CvBridge() 

def callback_color_image_raw(self,msg):
    try:
      # Decode the ROS2 Img data. There is barely any 
      # documentation on this so I dont know how it saves the imgdata
      self.frame = self.bridge.imgmsg_to_cv2(msg, "bgr8")
    except CvBridgeError as e:
      print(str(e))

    self.frame = cv2.imencode('.jpg',self.frame)[1]
    self.frame = self.frame.tobytes()
    image_64_encode = base64.b64encode(self.frame)
    self.image_encoded = image_64_encode.decode('utf-8')

我可以使用 CV 命令找到 self.frame 的图像格式吗?imgmsg_to_cv2转换成什么?我想知道我是否必须将 imencode 转换为 jpg(它已经是 jpg 格式了吗?)。

当我type(self.frame)得到<class 'numpy.ndarray'>(在 imencode 之前和之后)时,有没有办法从中获取格式?

它不像查找魔术字节那么容易,因为该文件仍在 np.ndarray 中。然而,后来编码的图像也是一个 np.ndarray,这意味着这些数组表示 jpg、png 等,没有魔法字节,而是原始数据。请停止将我链接到解释魔术字节的文章。

格式是指 jpg、png、bmp 等。

4

0 回答 0