在 C 或 C++ 中翻转灰度图像

GrayScale Image Flip in c or c++?

本文关键字:翻转 灰度图像 C++      更新时间:2023-10-16

我正在尝试水平翻转灰度图像。指针 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 循环和翻转维度,如下所示:

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