从左到右,从上到下翻转图像

时间:2014-11-04 09:51:16

标签: c arrays flip

我做了两个功能,其中一个从左到右翻转图像,另一个从上到下翻转图像。但出于某种原因,当我加载图像时,图像没有任何反应。

这是从左到右翻转的代码。

void flip_horizontal( uint8_t array[], 
              unsigned int cols, 
              unsigned int rows )
{
    unsigned int left = 0;
    unsigned int right = cols;
    for(int r = 0; r < rows; r++)
    {
    while(left != right && right > left)
        {
        int temp = array[r * cols+ left];
        array[(r * cols) + left] = array[(r * cols) + cols - right];
        array[(r * cols) + cols - right] = temp;
        right++;
        left++;
        } 
    }
}

这是从上到下翻转的代码。

void flip_vertical( uint8_t array[], 
            unsigned int cols, 
            unsigned int rows )
{
    unsigned int top = 0;
    unsigned int bottom = rows;
    for(int r = 0; r < cols; r++)
    {
    while(top != bottom && bottom > top)
        {
        int temp = array[r * rows+ top];
        array[(r * rows) + top] = array[(r * rows) + rows - bottom];
        array[(r * rows) + rows - bottom] = temp;
        bottom++;
        top++;
        } 
    }
}

1 个答案:

答案 0 :(得分:0)

尝试在for循环中移动这些内容:

unsigned int left = 0;
unsigned int right = cols;

unsigned int top = 0;
unsigned int bottom = rows;

否则,您只会翻转第一行/列。

您的索引方式还存在一些其他问题,但我不会破坏修复这些问题的乐趣: - )