CompressImage、Image传输时出现size=0的情况!

def capture_image(self, ret, image) -> CompressedImage:

if ret:

    obj_cimage = CompressedImage()

    obj_head = Header()


    obj_head.frame_id = "camera"

    obj_head.stamp = rospy.Time.now()

    obj_head.seq = 0

    # 编码图像为PNG格式的二进制数据

    retval, buffer = cv2.imencode('.png', image)

    if retval:

        obj_cimage.data = np.array(buffer).tobytes()

        obj_cimage.format = "png"

        obj_cimage.header = obj_head

        return obj_cimage

    else:

        rospy.logerr("图像编码失败")

else:

    rospy.logerr("没有摄像头数据")
cvbridge=CvBridge()

class Sub_image():
    def __init__(self) -> None:
         self.image_sub=rospy.Subscriber("/cam_image",CompressedImage,self.showcb,queue_size=1)
    def showcb(self,data):
        cv_image=cvbridge.compressed_imgmsg_to_cv2(data,"bgr8")
        cv2.imshow("dd",cv_image)
        cv2.waitKey(1)

def main():
    rospy.init_node("test1",anonymous=True)
    # 实例化的时候自动就会执行init
    sub_obj=Sub_image()
    rospy.spin()

可以将图像通过cv2.imencode编码一下,就可以了,具体原因不知道为什么。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值