Не удалось преобразовать из ‘8UC3’ в ‘bgr8

#python #c #opencv #ros

Вопрос:

я пытаюсь опубликовать изображение с помощью python . и я пытался подписаться на него через c . узел может взаимодействовать, но код подписчика не может кодировать тему изображения.это мой код .

 pub.publish(br.cv2_to_imgmsg(frame))
 

где br-это функция cvbridge, и я использовал здесь cvq_to_imgmsg.

на стороне подписчика.

 image_transport::Subscriber sub = it.subscribe("video_frames", 1, imageCallback);
 

я использую перенос изображений для подписки, и это моя функция обратного вызова

 void imageCallback(const sensor_msgs::ImageConstPtramp; msg)
{
 

  cv_bridge::CvImagePtr cv_ptr;
   
  try
  { 
   
    // Convert the ROS message  
    cv_ptr = cv_bridge::toCvCopy(msg, "bgr8");
     
   
    cv::Mat current_frame = cv_ptr->image;
     
    // Display the current frame
    cv::imshow("view", current_frame); 
     
    // Display frame for 30 milliseconds
    cv::waitKey(30);
  }
  catch (cv_bridge::Exceptionamp; e)
  {a
    ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
  }
}
 

код сценария кодирует msg и всегда выдает сообщение об ошибке. идк, что я делаю не так

Комментарии:

1. CV_8UC3 является bgr8 . возможно, вам следует взглянуть на исключение вместо того, чтобы ловить и игнорировать его, и предполагать, что вы знаете, в чем заключалось исключение.