海思AI芯片(Hi3519A/3559A)方案学习(十四)JPEG图片转换成bgr文件

前言

在系列文章海思AI芯片(Hi3519A/3559A)方案学习(十一)分析bgr文件格式 中有详细介绍bgr文件分量排列格式是bbbb...gggg....rrrr.... 但当时只提供代码来将bgr文件转换成Mat格式。本文来具体讲述其逆过程,即如何一张jpeg图片转换成bgr文件(其实前面文章的逆过程)。

 

读取jpg图片

使用opencv来读取jpeg图片,并resize成算法模型的网络size

Mat img = imread("D:/work/xxxx.jpg");

Mat image2;

if (img.empty())
{
    printf("reading image file fails \n");
    return 1;
}

//suppose network input size is 608x608
resize(img, image2, Size(608, 608));

转换成bgr文件

重点来了,将Mat里面bgrbgrbgr排列的数据变换为bgr文件里面的bbbb...gggg....rrrr...格式

	fp = fopen("D:/work/xxx_608x608.bgr", "wb");
	int step = image2.step;
	int h = image2.rows;
	int w = image2.cols;
	int c = image2.channels();

	for (int k = 0; k < c; k++) {
		for (int i = 0; i < h; i++) {
		   for (int j = 0; j < w; j++) {
			fwrite(&image2.data[i*step + j * c + k], sizeof(uint8_t), 1, fp);
			}
		}
	}

	fclose(fp);

验证

为了确认转换正确,可以用海思AI芯片(Hi3519A/3559A)方案学习(十一)分析bgr文件格式里面的代码将bgr文件转换成Mat并显示看是否正常。 

你可能感兴趣的:(嵌入式AI)