【问题标题】:How to get cv2 Mat from C++ vector?如何从 C++ 向量中获取 cv2 Mat?
【发布时间】:2023-01-19 13:06:33
【问题描述】:

我正在尝试从浮点矢量获取图像。(N、H、W、C)

我想做的是

  1. 将浮点向量 (HWC) 转换为 cv2 Mat 类型。
  2. 将 RGB 更改为 BGR,并乘以 255(使值变为 0~255)
  3. 转换为 uint8 类型垫。
  4. 获取图像。 (输入)

    所以我在下面以这种方式尝试了这个。 此代码不会出错。但不工作。 请让我知道该怎么做!

    vector<float> output(batch_size * orig_height * orig_width*3); //N H W C
    
    for(int bat=0; bat < batch_size; bat++){
        Mat result(width, height, CV_32F, (void*)(output.data()+ bat*height*width*3));
        cv::cvtColor(result, result, cv::COLOR_RGB2BGR);
        result = result * 255.0;
        result.convertTo(result, CV_8U);
        
        cv::imwrite(file_name, result);
    }
    

【问题讨论】:

    标签: c++ image opencv vector


    【解决方案1】:

    创建cv::Mats 时,数据类型还包括通道数。
    由于您有 3 个通道图像,您需要将 CV_32F 更改为 CV_32FC3 并将 CV_8U 更改为 CV_8UC3

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多