2016-10-07 5 views
0

Я читаю файл ppm, а затем пытаюсь его сохранить, чтобы узнать, насколько точны мой модуль загрузки и сохранения. Но в итоге я получаю разные результаты при сохранении. Я проверил значения пикселей с помощью MATLAB, поэтому я почти уверен, что мой загрузочный модуль работает хорошо. Спасительная модуль ниже:PPM-файл, чтение и письмо в C++

ofstream ofs; 
ofs.open("output.ppm", ofstream::out); 
ofs<<"P6"<<endl; 
ofs<<"# File after convolution"<<endl; 
ofs<<img_wd<<" "<<img_ht<<endl; //check if ASCII conversion is needed 
ofs<<max_val<<endl; 

for(int j=0; j <img_ht;j++) 
{ 
    for (int i=0; i<img_wd;i++) 
    { 
     ofs<<static_cast<char>(Pixel[j][i].r)<<static_cast<char>(Pixel[j][i].g)<<static_cast<char>(Pixel[j][i].b); //write as ascii 
    } 
    ofs<<endl; 
} 

Я связывающая действительный файл (https://github.com/aditisingh/Image_convolution_2D/blob/master/start_1.ppm) и сохраненный файл (https://github.com/aditisingh/Image_convolution_2D/blob/master/output.ppm), здесь. Любые предложения, материалы будут полезны. Благодаря!

+0

http://stackoverflow.com/a/39808791/2836621 –

ответ

0

Причины, по-моему, были, придания типов и пробелов.

ofstream ofs; 
ofs.open("output.ppm", ofstream::out); 
ofs<<"P6\n"<<img_wd<<" "<<img_ht<<"\n"<<max_val<<"\n"; 

for(int j=0; j <img_ht;j++) 
{ 
    for (int i=0; i<img_wd;i++) 
    { 
     ofs<<static_cast<unsigned char>(Pixel_tmp[j][i].r)<<static_cast<unsigned char>(Pixel_tmp[j][i].g)<<static_cast<unsigned char>(Pixel_tmp[j][i].b); //write as ascii 
    } 
} 

ofs.close(); 
Смежные вопросы