Gambar Hitam/Putih dengan karakter unsigned berwarna biru, bukan C++ hitam

Saya sedang membaca Gambar Skala Abu-abu .img (header 512 byte, 512 x 512 piksel x 8 bit per piksel).

Di sana saya menentukan ambang batas untuk mengubah gambar Skala Abu-abu menjadi gambar biner (hitam/putih).

Tetapi ketika saya menetapkan 0 pada piksel, ternyata menjadi biru muda (#01fffd)?!?! Saat saya menggunakan nilai 2 warnanya hampir hitam (#020100).

Bisakah Anda menjelaskan kepada saya bagaimana hal ini bisa terjadi?

Saya membaca gambar seperti ini:

int width = 512;
int height = 512;
File* imageFilePointerIn = fopen("image.img", "r+b");
File* binaryImageFilePointerOut = fopen("imageOut.img",
            "w+b");
unsigned char* header = new unsigned char[512];
unsigned char** imageData = new unsigned char*[width];
unsigned char** binaryImageArray = new unsigned char*[width];
fread(header, sizeof(char), 512, imageFilePointerIn);
for (int i = 0; i < width; i++) {
    data[i] = new unsigned char[height];
    fread(data[i], sizeof(char), height, imageFilePointerIn);
}
for (int i = 0; i < width; i++) {
    binaryImageArray[i] = new unsigned char[height];
}
char unsigned thresholdBinaryImage = 128;
for (int i = 0; i < width; i++) {
    for (int j = 0; j < height; j++) {
        if (thresholdBinaryImage <= data[i][j]) {
            binaryImageArray[i][j] = 255;
        } else {
            binaryImageArray[i][j] = 0;
        }
    }
}
fwrite(header, sizeof(char), headerSize, binaryImageFilePointerOut);
for (int i = 0; i < width; i++) {
    fwrite(binaryImageArray[i], sizeof(char), height,
           binaryImageFilePointerOut);
}
fclose(binaryImageFilePointerOut);
fclose(imageFilePointerIn);

Saya tidak tahu mengapa warna bisa ditampilkan? Untuk menampilkannya saya mentransfer file .img ke file .ras dengan kode yang diambil dari internet. Tapi menurut saya kesalahannya tidak mungkin terjadi karena saya melihat orang lain menggunakan kode yang sama untuk mengubah .img Grayscales menjadi .ras hanya untuk ditampilkan tanpa warna.

Senang rasanya mendapat saran :).


person ManWithConcern    schedule 12.02.2014    source sumber
comment
Dalam kode Anda tidak ada informasi apa pun tentang pemrosesan format gambar. Ini hanya pemrosesan piksel mentah tanpa header file gambar. Alat apa yang Anda gunakan untuk membuka file mentah seperti itu?   -  person Arsenii Fomin    schedule 12.02.2014
comment
Ya seperti yang saya katakan. Saya menghapus header 512 byte dari file .img dan menambahkannya setelah pemrosesan piksel kembali ke file .img yang baru dibuat sebelum piksel baru. Setelah itu saya menggunakan program lain untuk mentransfer .img ke file .ras dan kemudian melihatnya dengan XnView. Namun seharusnya tidak ada yang salah dengan program lain ini, karena program lain tidak memahami masalah yang saya alami dengan gambar skala abu-abu.   -  person ManWithConcern    schedule 13.02.2014
comment
Saya dapat mengatasi masalah ini dengan lebih tepat pada fungsi transfer img2ras.exe. Baca di sini: stackoverflow.com/questions/21820611/   -  person ManWithConcern    schedule 17.02.2014