使用c或c ++进行GrayScale图像翻转?

时间:2012-10-08 19:23:20

标签: c++ c image grayscale

我试图水平翻转灰度图像。指针fp指向原始图像,指针fp1正在创建水平翻转图像。程序执行正常,但输出图像最差...

    for( i =0 ;i<width ; i++)
     for(j=0; j <height; j++)
              idata[i][height - 1 -j] = ( (unsigned char)fgetc(fp));
    //flipping image          
for( i =0 ;i<width ; i++)
     for(j=0; j <height; j++)
              putc(idata[i][j] , fp1);                

图像的标题副本没有问题。我认为问题存在于for循环中... plz帮助我

1 个答案:

答案 0 :(得分:3)

你确定你没有混合宽度和高度吗?代码似乎假设当数据最有可能按行顺序时,按列顺序读取数据。尝试翻转for循环和翻转尺寸,如下所示:

for(j = 0; j < height; j++)
    for(i = 0; i < width; i++)
        idata[width - 1 - i][j] = ( (unsigned char)fgetc(fp));

//flipping image          

for(j = 0; j < height; j++)
    for(i = 0; i < width; i++)
        putc(idata[i][j] , fp1);