รูปภาพขาวดำที่มีอักขระที่ไม่ได้ลงนามจะเป็นสีน้ำเงินแทนที่จะเป็น C++ สีดำ

ฉันกำลังอ่านรูปภาพมาตราส่วนสีเทา .img (ส่วนหัว 512 ไบต์, 512 x 512 พิกเซล x 8 บิตต่อพิกเซล)

ที่นั่น ฉันกำลังกำหนดเกณฑ์ในการเปลี่ยนรูปภาพระดับสีเทาให้เป็นรูปภาพไบนารี (ดำ/ขาว)

แต่เมื่อฉันกำหนด 0 ให้กับพิกเซล มันจะกลายเป็นสีฟ้าอ่อน (#01fffd)?!?! เมื่อฉันใช้ค่า 2 มันเกือบจะเป็นสีดำ (#020100)

คุณช่วยอธิบายฉันหน่อยได้ไหมว่ามันมาได้อย่างไร?

ฉันอ่านภาพเช่นนี้:

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);

ฉันไม่รู้ว่าทำไมถึงสามารถแสดงสีได้? สำหรับการแสดง ฉันจะโอนไฟล์ .img ไปเป็นไฟล์ .ras ด้วยโค้ดที่ตัดมาจากอินเทอร์เน็ต แต่ฉันไม่คิดว่าข้อผิดพลาดจะเกิดขึ้นเนื่องจากฉันเห็นผู้อื่นใช้รหัสเดียวกันในการแปลง .img Grayscales เป็น .ras เพียงเพื่อแสดงโดยไม่มีสี

คงจะดีที่จะได้รับข้อเสนอแนะใด ๆ :)


person ManWithConcern    schedule 12.02.2014    source แหล่งที่มา
comment
ในโค้ดของคุณไม่มีข้อมูลใดๆ เกี่ยวกับการประมวลผลรูปแบบภาพ เป็นเพียงการประมวลผลพิกเซลแบบดิบโดยไม่มีส่วนหัวของไฟล์ภาพ คุณใช้เครื่องมืออะไรในการเปิดไฟล์ดิบดังกล่าว?   -  person Arsenii Fomin    schedule 12.02.2014
comment
ใช่อย่างที่ฉันพูด ฉันตัดส่วนหัวขนาด 512 ไบต์ออกจากไฟล์ .img และเพิ่มหลังจากการประมวลผลพิกเซลกลับไปเป็นไฟล์ .img ที่สร้างขึ้นใหม่ก่อนพิกเซลใหม่ หลังจากนั้นฉันใช้โปรแกรมอื่นเพื่อถ่ายโอน .img ไปเป็นไฟล์ .ras แล้วเปิดดูด้วย XnView แต่ไม่น่าจะมีอะไรผิดปกติกับโปรแกรมอื่นนี้ เพราะโปรแกรมอื่นไม่มีปัญหาแบบเดียวกับที่ฉันมีกับภาพระดับสีเทา   -  person ManWithConcern    schedule 13.02.2014
comment
ฉันสามารถสรุปปัญหาได้แม่นยำยิ่งขึ้นกับฟังก์ชันการถ่ายโอน img2ras.exe อ่านที่นี่: stackoverflow.com/questions/21820611/   -  person ManWithConcern    schedule 17.02.2014