0

.bmp ファイルを読み込んで、コマンド ラインの引数に基づいて変更することになっています。

例:
-fromrow x。x は処理する一番下の行を指定します
。-torow x。x は処理する一番上の行を指定します。
-fromcol x。x は処理する一番左の列を指定します。
-tocol x。x は処理する一番右の列を指定します。
-op x、ここで x は次のいずれかです
-- 1= 画像のしきい値を設定します (127 を超える指定範囲内の任意のピクセル値は t0 255 に変更され、127 以下のピクセル値は 0 に変更されます)
-- 2= 負 (指定された範囲内の任意のピクセル値 p は 255-p に変更されます)

.bmp ファイルを読み取る例として、次のコードが与えられました。

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp= fopen("sample.bmp", "r+");
    if (fp == NULL){
            printf("Error");
    }

    int temp=0;  

    //Go to Byte 22
    fseek(fp,22,SEEK_SET);
    //Read byte 22 into an integer variable
    fread(&temp, sizeof(int), 1, fp);
    printf("Number of Rows: %d\n", temp); 

    fseek(fp,18,SEEK_SET);
    fread(&temp, sizeof(int), 1, fp);
    printf("Number of Columns: %d\n", temp); 

    fseek(fp,10,SEEK_SET);
    fread(&temp, sizeof(int), 1, fp);
    printf("Start of Pixels: %d\n", temp); 

    fclose (fp);
}

「ピクセルの開始」とは何ですか? どういうわけか画像のバイトをループして2D配列にコピーすると思います...しかし、ファイルのバイトにアクセスするためのsuntaxがわかりませんか?

画像を変更するという点では、どこから始めればよいかさえわかりません... :/途方に暮れています。ヘルプ/アドバイス/情報/リンクは大歓迎です。

前もって感謝します。

4

1 に答える 1

1

まず、、を読みBITMAPFILEHEADER、次にBITMAPINFO(を含むBITMAPINFOHEADER)を読みます。これらは、ピクセルを見つけて解釈するために必要な情報を提供します。

于 2011-04-27T21:58:15.267 に答える