图像的水平翻转[python]

图像的水平翻转[python],python,Python,所以我需要水平翻转一个图像,这意味着相对于水平轴,就像这张图片 但是我的问题是它相对于垂直轴翻转,如图所示 这是我现在的代码。有人能解释一下我需要做的改变吗?image.gif是我试图翻转的图像。我将新图像设置在如下所示的新位置的原因是,我希望该图像出现在与旧图像相同的窗口中。的确如此!只是垂直翻转,而不是水平翻转 from cImage import* def horizentalFlip(oldimage): myimagewindow = ImageWin("image",1000

所以我需要水平翻转一个图像,这意味着相对于水平轴,就像这张图片

但是我的问题是它相对于垂直轴翻转,如图所示

这是我现在的代码。有人能解释一下我需要做的改变吗?image.gif是我试图翻转的图像。我将新图像设置在如下所示的新位置的原因是,我希望该图像出现在与旧图像相同的窗口中。的确如此!只是垂直翻转,而不是水平翻转

from cImage import*
def horizentalFlip(oldimage):
    myimagewindow = ImageWin("image",1000,600)
    oldimage = FileImage("image.gif")
    oldimage.draw(myimagewindow)
    oldw = oldimage.getWidth()
    oldh = oldimage.getHeight()

    newImage = EmptyImage(oldw,oldh)

    maxp = oldw - 1
    for row in range(oldh):
        for col in range(oldw):
            oldpixel = oldimage.getPixel(maxp-col,row)
            newImage.setPixel(col,row,oldpixel)
    newImage.setPosition(oldw+1,0)
    newImage.draw(myimagewindow)
    myimagewindow.exitOnClick()

谢谢

您想要的翻转类型(围绕x轴的反射,您的第一张图片)通常称为“垂直”翻转,而围绕y轴的反射(您的第二张图片)通常称为水平翻转

撇开术语不谈,你需要关于x轴的反射,如果我理解正确,你的问题是你得到的是关于y轴的反射。这是因为以下几行:

  maxp = oldw - 1
  ...
        oldpixel = oldimage.getPixel(maxp-col,row)
操纵宽度(
w
)、列(
col
)和每个
getPixel
调用的第一个坐标参数:所有这些概念都与操纵每个像素的水平坐标有关。但您希望更改每个像素的垂直坐标,因此需要使用高度、行和第二个坐标参数:

  maxp = oldh - 1
  ...
        oldpixel = oldimage.getPixel(col, maxp - row)

为什么不使用枕头进行图像处理?因为我们需要使用cImage。哦,好的。我现在明白了。我一辈子都有错误的观念吗?还是这个词改变了它的意思?你贴的照片很有意义。我现在对photoshop感到困惑。所以根据答案,水平翻转意味着移动/旋转水平访问,这反过来会使它围绕垂直访问旋转。这就是问题所在!我似乎对x轴和y轴的行和列有点困惑。谢谢你的帮助