水平翻转 RGB 元组列表 python

Horizontal flip RGB tuple list python

我正在尝试让图像在 python 中进行水平翻转。我在包含所有 RBG 值的文本文件中有 "image"。我将这些 RGB 值放入元组中,以便我可以更改颜色/对图像进行处理。我想出了如何通过

进行垂直翻转
def apply_vertical_flip(image_2dlist, outfile):
'''
Accepts a 2-dimensional list of tuples and an output file object
Flips the image data in image_2dlist vertically
'''
    print("\nOpening ny.ppm for reading and ny_verical_flip.ppm for writing...\n")

    for i in range(len(image_2dlist)):
        image_2dlist.reverse()

    print(image_2dlist)

但是对于水平方向我需要翻转每一行的内容,而不是整个文件。我真的卡住了,我不知道如何更改每一行的内容。

基本上这就是我需要发生的事情

(1,2,3), (4,5,6), (7,8,9), (10,11,12)

(13,14,15) (16,17,18)(线的长度可能不同)

进入

(10,11,12), (7,8,9), (4,5,6), (1,2,3)

(18,17,16), (13,14,15)

出于某种原因,元组被打印在同一行上,但我在应该中断的地方放了一个 \n(不在代码中,只是堆栈溢出)

您仅使用 1 个列表来存储您的元组,这是错误的做法。

图像是一个 4 边形,其像素与网格状结构对齐;据推测,您描述的线是该网格的一行。

为什么不使用表示图像像素的 2D 列表,然后您可以简化要实现的图像的 calculations/processing。此外,这样做无需担心图像大小 and/or width/height.

例如;

w, h = img.width, img.height;
pixels = [[0 for x in range(w)] for y in range(h)] 
# Fill the pixels here
# Flip the image horizontally
for row in grid:
    row.reverse()

根据您未公开的数据结构,您可能必须以多种方式构建初始二维数组。

这将翻转每一行。

image = (((1,2,3),(4,5,6),(7,8,9),(10,11,12)),((13,14,15),(16,17,18)))
image_Hflip = tuple([i[::-1] for i in image])

print image_Hflip

(((10, 11, 12), (7, 8, 9), (4, 5, 6), (1, 2, 3)), ((16, 17, 18), (13, 14, 15)))

虽然我确信有更好的方法来表示图像数据。