What should I do if I encounter an error while using the cv:: merge function in opencv 4.8.1?

please help me,thank you!!!

error:
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.8.1) /home/tungchiahui/Downloads/opencv-4.8.1/modules/imgproc/src/color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function 'cv::impl::{anonymous}::CvtHelper<VScn, VDcn, VDepth, sizePolicy>::CvtHelper(cv::InputArray, cv::OutputArray, int) [with VScn = cv::impl::{anonymous}::Set<3, 4>; VDcn = cv::impl::{anonymous}::Set<3, 4>; VDepth = cv::impl::{anonymous}::Set<0, 2, 5>; cv::impl::{anonymous}::SizePolicy sizePolicy = cv::impl::<unnamed>::NONE; cv::InputArray = const cv::_InputArray&; cv::OutputArray = const cv::_OutputArray&]'
> Invalid number of channels in input image:
>     'VScn::contains(scn)'
> where
>     'scn' is 6

[ros2run]: Aborted


code:

#include <iostream>
#include <string>
#include "rclcpp/rclcpp.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/core/cuda.hpp"

class OpenCV_Node: public rclcpp::Node   //rclcpp是命名空间 Node是一个父类  OpenCV_Node是一个子类
{
  public:
    OpenCV_Node();
  private:
    bool Mat_Arr_Split_merge(const std::string &file_name);
    bool Vector_Split_merge(const std::string &file_name);
};

int main(int argc, char ** argv)
{
  rclcpp::init(argc,argv);

  auto opencv_node__ = std::make_shared<OpenCV_Node>();  //使用 make_shared 函数分配内存并返回 shared_ptr 指针

  rclcpp::spin(opencv_node__);

  rclcpp::shutdown();

  return 0;
}

OpenCV_Node::OpenCV_Node():Node("OpenCV_Node")
{
//  this->Mat_Arr_Split_merge("./media/林星阑H.jpg");
  this->Vector_Split_merge("./media/林星阑H.jpg");
}

bool OpenCV_Node::Mat_Arr_Split_merge(const std::string &file_name)
{
  cv::Mat img = cv::imread(file_name);
  if(img.empty() == false)
  {
    RCLCPP_INFO(this->get_logger(),"成功读取图片!");
  }
  else
  {
    RCLCPP_INFO(this->get_logger(),"无法读取图片,请确定图片文件是否存在,输入格式是否正确!");
    return false;
  }
  cv::Mat imgs[3];
  cv::Mat result[2];
  cv::split(img,imgs);
  cv::namedWindow("RGB-B通道",cv::WINDOW_FREERATIO);
  cv::namedWindow("RGB-G通道",cv::WINDOW_FREERATIO);
  cv::namedWindow("RGB-R通道",cv::WINDOW_FREERATIO);
  cv::imshow("RGB-B通道",imgs[0]);
  cv::imshow("RGB-G通道",imgs[1]);
  cv::imshow("RGB-R通道",imgs[2]);
  imgs[2] = img;  //改变图像通道数量
  cv::merge(imgs,3,result[0]);
  cv::namedWindow("合并图像结果0",cv::WINDOW_FREERATIO);
  cv::imshow("合并图像结果0",result[0]);   //不一定能看出来效果,需要Image Watch插件
  cv::Mat zero = cv::Mat::zeros(img.rows,img.cols,CV_8UC1);  //一个通道的0矩阵
  imgs[0] = zero;
  imgs[1] = zero;
  cv::merge(imgs,3,result[1]);
  cv::namedWindow("合并图像结果1",cv::WINDOW_FREERATIO);
  cv::imshow("合并图像结果1",result[1]);   //不一定能看出来效果,需要Image Watch插件
  cv::waitKey(0);
  return true;
}

bool OpenCV_Node::Vector_Split_merge(const std::string &file_name)
{
  cv::Mat img = cv::imread(file_name);
  if(img.empty() == false)
  {
    RCLCPP_INFO(this->get_logger(),"成功读取图片!");
  }
  else
  {
    RCLCPP_INFO(this->get_logger(),"无法读取图片,请确定图片文件是否存在,输入格式是否正确!");
    return false;
  }
  cv::Mat HSV;
  cv::Mat result;
  cv::cvtColor(img,HSV,cv::COLOR_RGB2HSV);
  std::vector<cv::Mat> imgv;
  cv::split(HSV,imgv);
  cv::namedWindow("HSV-H通道",cv::WINDOW_FREERATIO);
  cv::namedWindow("HSV-S通道",cv::WINDOW_FREERATIO);
  cv::namedWindow("HSV-V通道",cv::WINDOW_FREERATIO);
  cv::imshow("HSV-H通道",imgv.at(0));
  cv::imshow("HSV-S通道",imgv.at(0));
  cv::imshow("HSV-V通道",imgv.at(0));
  imgv.push_back(HSV);  //将imgv中的图像通道变成不一致
  cv::merge(imgv,result);
  cv::namedWindow("合并图像结果2",cv::WINDOW_FREERATIO);
  cv::imshow("合并图像结果2",result);
  cv::waitKey(0);
  cv::destroyAllWindows();
  return true;
}