以下是将96x96x3的float数组转成cv::mat并保存rgb图像的c++代码:

#include <opencv2/opencv.hpp>

using namespace cv;

void save_rgb_image(float* data, int width, int height, const char* filename) {
    Mat img(height, width, CV_32FC3, data);
    img.convertTo(img, CV_8UC3, 255.0);
    imwrite(filename, img);
}

int main() {
    int width = 96;
    int height = 96;
    int channels = 3;

    float data[width * height * channels];

    // 填充data数组
    // ...

    save_rgb_image(data, width, height, "output.jpg");

    return 0;
}

在上面的代码中,我们定义了一个save_rgb_image函数来将96x96x3的float数组转成cv::mat,并保存为rgb图像。该函数接受四个参数:data是输入的float数组,widthheight是图像的宽度和高度,filename是保存图像的文件名。

save_rgb_image函数中,我们首先创建一个cv::mat对象,并将输入的float数组作为数据填充到该对象中。然后,我们将该对象转换为CV_8UC3格式,即8位无符号整数类型的3通道图像,并将像素值从[0, 1]的浮点数范围转换为[0, 255]的整数范围。最后,我们使用imwrite函数将该图像保存为文件。

在主函数中,我们定义了一个96x96x3的float数组,并填充了一些随机数据。然后,我们调用save_rgb_image函数将该数组转成cv::mat,并保存为rgb图像。

用c++将96x96x3的float数组转成cvmat并保存rgb图像

原文地址: https://www.cveoy.top/t/topic/bUPM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录