3

我正在尝试将图片“切成两半”并水平翻转两侧。请参阅下面的链接。

http://imgur.com/a/FAksh

原图:

在此处输入图像描述

输出需要是什么:

在此处输入图像描述

我得到了什么

在此处输入图像描述

这就是我所拥有的,但它所做的只是水平翻转图片

def mirrorHorizontal(picture):
  mirrorPoint = getHeight(picture)/2
  height = getHeight(picture)
  for x in range(0, getWidth(picture)):
    for y in range(0, mirrorPoint):
      topPixel = getPixel(picture, x, y)
      bottomPixel = getPixel(picture, x, height - y - 1)
      color = getColor(topPixel)
      setColor(bottomPixel, color)

那么如何水平翻转每一面,使其看起来像第二张照片?

4

2 回答 2

1

一种方法是定义一个水平翻转图像的一部分的函数:

def mirrorRowsHorizontal(picture, y_start, y_end):
    ''' Flip the rows from y_start to y_end in place. '''
    # WRITE ME!

def mirrorHorizontal(picture):
    h = getHeight(picture)
    mirrorRowsHorizontal(picture, 0, h/2)
    mirrorRowsHorizontal(picture, h/2, h)

希望这能给你一个开始。

提示:您可能需要交换两个像素;为此,您需要使用临时变量。

于 2012-10-23T02:19:57.767 回答
0

一年后,我想我们可以给出答案:

def mirrorRowsHorizontal(picture, y_start, y_end):
    width = getWidth(picture)

    for y in range(y_start/2, y_end/2):
        for x in range(0, width):
            sourcePixel = getPixel(picture, x, y_start/2 + y)
            targetPixel = getPixel(picture, x, y_start/2 + y_end - y - 1)
            color = getColor(sourcePixel)
            setColor(sourcePixel, getColor(targetPixel))
            setColor(targetPixel, color)

def mirrorHorizontal(picture):
    h = getHeight(picture)
    mirrorRowsHorizontal(picture, 0, h/2)
    mirrorRowsHorizontal(picture, h/2, h)

取自这里的垂直翻转。

带有 3 个条纹的示例:

mirrorRowsHorizontal(picture, 0, h/3)
mirrorRowsHorizontal(picture, h/3, 2*h/3)
mirrorRowsHorizontal(picture, 2*h/3, h)

前 :

在此处输入图像描述

后 :

在此处输入图像描述

于 2013-06-16T06:43:35.903 回答