c++ - C 或 C++ 中的灰度图像翻转?

标签 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 循环中...请帮助我

最佳答案

你确定你没有混淆宽度和高度吗?该代码似乎假设数据最有可能按行顺序读取时按列顺序读取。尝试翻转 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);

关于c++ - C 或 C++ 中的灰度图像翻转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788132/

相关文章:

c - FFmpeg:avcodec_encode_video() 和 JPEG 图像

ios - 在 xcassets 中使用组加载图像数组

html - 如何在html中正确显示纵向模式的图像?

java - JSP/TomCat 中不显示 img

c++ - 这个用于计数的链表有什么问题

c++ - Windows 标题栏图标

c++ - 数组右值的地址

c++ - 如何使用 std::sort 在 C++ 中对数组进行排序

c - mbrtowc 的 s==NULL 案例的目的是什么?

c - 在 gcc 中禁用可变长度自动数组