簡體   English   中英

在 C 中將二維數組轉換為灰度圖像

[英]Converting 2D array into a greyscale image in C

我使用 header 文件(LenaArray.h); int lena [511][511] = {162,162,162,etc...}, (LenaArray.h); int lena [511][511] = {162,162,162,etc...},

但現在我想將它轉換成灰度圖像,我不知道如何請幫忙? 我正在嘗試打印的莉娜的圖像

#include <stdio.h>
#include "LenaArray.h" 

int main () {

int i,j;

int width = 511; 
int height = 511;

for (i = 0; i < height; i ++ )
{
    for(j = 0; j < width; j ++)
    {
        printf("%d",&lena[i][j]);
    }

}


}
#include <stdio.h>

typedef unsigned char U8;
typedef struct { U8 p[4]; } color;


U8 lena[511][511];

void save(char* file_name,int width,int height)
{

    FILE* f = fopen(file_name, "wb");


    color tablo_color[256];
    for (int i = 0; i < 256; i++)
        tablo_color[i] = { (U8)i,(U8)i,(U8)i,(U8)255 };//BGRA 32 bit


    U8 pp[54] = { 'B', 'M', 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0 ,
                     40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 32 };
    *(int*)(pp + 2) = 54 + 4 * width * height;  //file size
    *(int*)(pp + 18) = width;
    *(int*)(pp + 22) = height;
    *(int*)(pp + 42) = height * width * 4;      //bitmap size
    fwrite(pp, 1, 54, f);


    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            U8 indis = lena[i][j];
            fwrite(tablo_color+indis,4,1,f);
        }
    }

    fclose(f);

}

int main()
{

    for (int i = 0; i < 511; i++)
    {
        for (int j = 0; j < 511; j++)
        {
            lena[i][j]=i+j;
        }
    }

    save("test.bmp", 511, 511);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM