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

matplotlib仅显示最后一张imshow图像 循环绘制gamma校正图如何解决

Google Colab Gamma校正多图像输出修复方案

问题原因

matplotlib默认复用当前激活画布绘图,循环内多次调用plt.imshow()会导致后绘制的内容覆盖前序内容,且未主动触发画布渲染时,只有循环执行完毕后才会输出最终画布上的最后一张图像。

修复后可运行代码

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 提前读取原始图像(示例代码,替换为你自己的图像读取逻辑即可)
# cub = cv2.cvtColor(cv2.imread("你的图像路径"), cv2.COLOR_BGR2RGB) 
# 注:OpenCV默认返回BGR格式图像,需转换为RGB适配matplotlib显示,否则会出现颜色偏移

gamma_values = [0.1, 0.5, 1.2, 1.8, 2.2]
for gamma in gamma_values:
    # 按指定公式执行Gamma校正
    corrected = np.array(255 * (cub / 255) ** gamma, dtype='uint8')
    # 新建独立画布,避免图像互相覆盖
    plt.figure()
    plt.imshow(corrected)
    # 为每张图添加Gamma值标题,方便区分
    plt.title(f"Gamma={gamma}")
    # 可选:隐藏坐标轴,更符合图像展示习惯
    plt.axis('off')
    # 主动渲染当前画布,输出本次Gamma对应的校正图像
    plt.show()

核心修改说明

  • 循环内每次绘图前调用plt.figure()新建独立画布,避免不同Gamma的校正结果互相覆盖
  • 每次绘图完成后调用plt.show()主动触发画布渲染,保证每张图都能正常输出
  • 补充了必要的依赖库导入,避免未定义变量报错
  • 新增BGR转RGB提示,避免OpenCV读取图像出现颜色偏移问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:08