Python 使用Matplotlib.Pyplot显示非规范化图像会导致多色像素马赛克:为什么? 上下文

Python 使用Matplotlib.Pyplot显示非规范化图像会导致多色像素马赛克:为什么? 上下文,python,matplotlib,Python,Matplotlib,我编写了一个程序,它接收由我的另一个程序规范化的图像输入 输入图像为: 程序输出图像的标准化版本。下面将进一步显示规范化方法 问题 输出错误地包含像素的多色马赛克。给定上述输入,输出为(缩放): 预期结果应为上述平面 最小和可执行源 在您选择的目录路径中,将输入图像放在您选择的名为的目录中 在同一个目录路径中,创建另一个名为不同的目录。它将包含由程序创建的输出图像 复制并粘贴以下代码,将包含目录路径的两个常量替换为自定义的两个目录路径 执行代码 看看输出图像:您应该看到与我在这个问题中显示的

我编写了一个程序,它接收由我的另一个程序规范化的图像输入

输入图像为:

程序输出图像的标准化版本。下面将进一步显示规范化方法

问题 输出错误地包含像素的多色马赛克。给定上述输入,输出为(缩放):

预期结果应为上述平面

最小和可执行源
  • 在您选择的目录路径中,将输入图像放在您选择的名为的目录中
  • 在同一个目录路径中,创建另一个名为不同的目录。它将包含由程序创建的输出图像
  • 复制并粘贴以下代码,将包含目录路径的两个常量替换为自定义的两个目录路径
  • 执行代码
  • 看看输出图像:您应该看到与我在这个问题中显示的输出图像相同的输出图像 在以下代码中:

    • 您可以看到反规范化方法
    • 用于测试的方法
      \u绘图\u图像\u预测\u
      使用Matplotlib.Pyplot创建一个窗口,其中包含来自RAM输入图像的输出图像
    • 由于
      \uu fetch\u归一化图像
      \uuuu load\u XYZ
      将输入图像从磁盘加载到RAM,因此可以获取输入图像
    将numpy导入为np
    从numpy导入数组
    将matplotlib.pyplot作为plt导入
    导入操作系统
    从浏览导入数据
    类启动器:
    __包含\u规范化\u映像=“/content/drive/My drive/Informatique/Projets\u Informatiques”的路径\
    “/Projets\u Python/bug\u隔离\u拼图\u像素/normalized\u图像”
    __路径\包含\非规范化\图像=“/content/drive/My drive/Informatique/Projets\ u Informatiques”\
    “/Projets\u Python/bug\u隔离\u拼图\u像素”\
    “/非规范化的_图像”
    定义初始化(自):
    通过
    def从标准化图像(自身)显示非标准化图像:
    self.\uuuu绘图\u图像\u预测\u用于测试()
    def uu绘图u图像u预测u测试(自):
    规范化的\u图像=自。\u获取\u规范化的\u图像()
    标准化的_图像=标准化的_图像[[0,0,0]]
    非规范化\u图像=自身。\u非规范化(规范化\u图像)
    图=plt.图(figsize=(15,5))
    plt.子地块(1,3,1)
    plt.imshow(非规范化的_图像[1],插值='nearest')
    打印轴(“关闭”)
    plt.紧_布局()
    plt.savefig(包含非规范化图像+'/非规范化图像')的自路径
    plt.关闭(图)
    @静力学方法
    定义非规范化(输入数据):
    输入数据=(输入数据+1)*127.5
    返回输入数据类型(np.uint8)
    def uu获取u标准化u图像(自):
    打印(“加载规范化图像”)
    图像=[]
    加载的图像=自。\加载数据(
    启动器。包含规范化图像的路径,
    “.jpg”)
    对于范围内的img(透镜(加载的图像)):
    append(加载的图片[img])
    图像=数组(图像)
    打印(“/加载规范化图像”)
    返回图像
    @静力学方法
    定义从目录(目录,分机)加载数据:
    文件=[]
    文件名=[]
    计数=0
    对于目录中的d:
    对于os.listdir(d)中的f:
    如果f.endswith(ext):
    image=data.imread(os.path.join(d,f))
    如果len(图像形状)>2:
    文件。追加(图像)
    文件名.append(os.path.join(d,f))
    计数=计数+1
    返回文件
    定义加载路径(自身,路径):
    目录=[]
    如果os.path.isdir(路径):
    目录。追加(路径)
    对于os.listdir(路径)中的元素:
    如果os.path.isdir(os.path.join(path,elem)):
    目录=目录+self.\u加载\u路径(os.path.join(path,elem))
    目录.append(os.path.join(path,elem))
    返回目录
    定义加载数据(自身、目录、外部):
    files=self.\u从目录(self.\u加载路径(目录),ext)加载数据
    返回文件
    打印(“执行程序”)
    启动器=启动器()
    launcher.show_非规范化的_图像来自_规范化的_图像()
    打印(“/执行程序”)
    
    问题
    你知道为什么我用这种非规范化方法得到了一个多色像素马赛克吗?

    读了所有这些,似乎它与keras/tensorflow/deep learning无关?我想,这个问题也可以在一段代码中表现出来?我是一名计算机视觉工程师,我在这里回答了大量与简历相关的问题。我确实完整地阅读了这篇文章。我知道你的问题与机器学习无关。我的观点是,你的文章的整个上下文部分与你的问题完全无关。从字面上说,你的文章中每一件不是从“图像读取->图像处理->图像显示”开始的事情都是不相关的。下载图像与此无关。显示一个示例图像,显示处理该图像的函数,并显示您获得的输出与预期的输出。@JarsOfJam Scheduler您不必编写新问题,您可以编辑此问题。若您进行编辑,它将弹出到队列中,供人们查看。如果您编辑了它,但没有足够的人看到它,您可以在Python聊天室(sopython.com)中发布,并要求进行一些重新开放投票。在我看来,最好的提问方式是“假装你在和一位忙碌的同事交谈。”FWIW,这并不是因为我或其他人不欣赏你花这么多时间提出问题,这就是为什么我们试图通过评论给出补救措施。我们希望问题在这里有所帮助:)。这是一个降价的事情-