ros opencv error cv_bridge exception

 cv_bridge exception: [8UC3] and [32FC1] do not have the same number of channel 

 cv_bridge exception: [8UC3] and [32FC1] do not have the same number of channel

 

cv_bridge exception: [mono8] is a color format but [8UC3] is not so they must have the same OpenCV type, CV_8UC3, CV16UC1 ....
 

今天碰到这个错误。

    cv_bridge::CvImagePtr cv_ptr;
    cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::MONO8);

我的image callback:

  void imageCb(const sensor_msgs::ImageConstPtr& msg)
  {
    cv_bridge::CvImagePtr cv_ptr;
    printf("imag ge%d\n",__LINE__);                                               
    try
    {
      cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::TYPE_8UC1);   
    printf("imag ge%d\n",__LINE__);                //convert ROS image to CV image and make copy of it storing in cv_ptr(a pointer)
    }
    catch (cv_bridge::Exception& e)
    {
      ROS_ERROR("cv_bridge exception: %s", e.what());
      return;
    }
}


 出现此类错误,是由于从ROS 图像转换为opencv可用的图像时,图像编码不一致导致。

改为

sensor_msgs::image_encodings::TYPE_8UC3

后,代码正常。

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值