You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环实现图像垂直翻转的代码问题求助

问题排查与修复方案

你的代码存在两个核心问题,导致垂直翻转异常:

1. 垂直翻转的循环范围错误

垂直翻转只需要交换前半部分行和对应的后半部分行(比如第0行和最后一行、第1行和倒数第二行),遍历所有行的话,会把已经交换过的行再次交换,相当于白做了一半操作,最终只完成了部分翻转。

2. 水平与垂直翻转逻辑耦合混乱

当vertical=True时,你先执行了水平翻转的像素交换,再执行垂直方向的交换,这不是纯粹的垂直翻转,而是两种翻转的错误叠加;同时在列循环里处理垂直交换,会导致像素被重复错误替换。

修复后的代码

def flip(image, vertical=False):
    height = len(image)
    width = len(image[0])
    
    if vertical:
        # 垂直翻转:交换前半行和对应后半行
        for row in range(height // 2):
            # 直接交换整行,无需遍历列
            image[row], image[height - row - 1] = image[height - row - 1], image[row]
    else:
        # 水平翻转:每行内交换左右半部分像素
        for row in range(height):
            for col in range(width // 2):
                image[row][col], image[row][width - col - 1] = image[row][width - col - 1], image[row][col]
    
    return True

修复说明

  • 垂直翻转直接交换整行,无需逐像素处理,效率更高且逻辑清晰;
  • 水平和垂直翻转逻辑完全分离,根据vertical参数执行对应操作;
  • 垂直翻转的循环范围改为height//2,避免重复交换。

内容的提问来源于stack exchange,提问作者Fairytail52

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:14:52