用c++将96x96x3的float数组转成cvmat并保存rgb图像
以下是将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数组,width和height是图像的宽度和高度,filename是保存图像的文件名。
在save_rgb_image函数中,我们首先创建一个cv::mat对象,并将输入的float数组作为数据填充到该对象中。然后,我们将该对象转换为CV_8UC3格式,即8位无符号整数类型的3通道图像,并将像素值从[0, 1]的浮点数范围转换为[0, 255]的整数范围。最后,我们使用imwrite函数将该图像保存为文件。
在主函数中,我们定义了一个96x96x3的float数组,并填充了一些随机数据。然后,我们调用save_rgb_image函数将该数组转成cv::mat,并保存为rgb图像。
原文地址: https://www.cveoy.top/t/topic/bUPM 著作权归作者所有。请勿转载和采集!