【问题标题】:Unable to display image using matplotlib.pyplot on ipython project无法在 python 项目中使用 matplotlib.pyplot 显示图像
【发布时间】:2019-04-25 04:23:50
【问题描述】:

我正在尝试使用我自己的目录在 github 上运行 FienSoP/canny_edge_detector 代码。但不是显示图形,而是显示图形大小()。

canny_Edge_Detector.ipynb

%matplotlib inline
from utils import utils
import canny_edge_detector as ced

imgs = utils.load_data('⁨/Users⁩/office⁩/Mask_RCNN⁩/office/images')
utils.visualize(imgs, 'gray')
<Figure size 1440x2880 with 0 Axes>

util.py

import numpy as np
import skimage
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg
import os
import scipy.misc as sm
import glob

def rgb2gray(rgb):

    r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b

    return gray

def load_data(dir_name):  
    imgs = []
    data_path = os.path.join(dir_name,'*g')
    files = glob.glob(data_path)
    for filename in files:
        img = mpimg.imread(filename)
        img = rgb2gray(img)
        imgs.append(img)
    return imgs


def visualize(imgs, format=None, gray=False):
    plt.figure(figsize=(20, 40))
    for i, img in enumerate(imgs):
        if img.shape[0] == 3:
            img = img.transpose(1,2,0)
        plt_idx = i+1
        plt.subplot(len(imgs), 1, plt_idx)
        plt.imshow(img, format)
    plt.show()

既然,我是一个初学者描述的答案将非常有帮助。提前谢谢你。

【问题讨论】:

  • 你能不能尝试一下: 1. print(len(imgs)) (看看你的列表中是否真的有图片)。 2. print([a.shape for a in imgs])
  • 1. 2. 显示为空。但图像存在于文件夹中
  • 好的,所以您的问题与加载图像有关。您可以将 print('files: {}'.format(files)) 放入函数 load_data 中,在 glob.glob 语句下吗?让我们看看文件是否找到但没有正确加载,或者根本没有找到。
  • 它以文件的形式给出结果:[ ]
  • 是的,他们不是。它给了我 /\u2068Users\u2069/office/Mask_RCNN/\u2068office\u2069/images/\u2069/*g'。

标签: python matplotlib


【解决方案1】:

复制字符串

'/Users/office/Mask_RCNN/office/images'

您在问题中直接从问题中提供到 python 控制台,提供以下内容:

'\xe2\x81\xa8/Users\xe2\x81\xa9/office\xe2\x81\xa9/Mask_RCNN\xe2\x81\xa9/office/images'

因此,您最初复制此字符串的源添加了一些零宽度字符,当您将字符串粘贴到浏览器中时这些字符不可见,但会导致 python 在一个奇怪的位置查找您的数据。 This 是一个相关的问题。

如果您手动重新键入字符串(或在我的答案中复制+粘贴顶部字符串),您应该没问题。

【讨论】:

    【解决方案2】:

    需要在 iPython 中使用%matplotlib inline

    %matplotlib inline 
    import matplotlib.pyplot as plt
    plt.plot([1,2,3])
    

    请参阅:Plotting with Matplotlib

    【讨论】:

    • 我已经在 canny_Edge_Detector.ipynb 上使用过了。您是要我将其添加到 util.py 文件中吗?
    • 我在笔记本的第一个单元格中使用了 %matplotlib inline 并且它可以工作。
    猜你喜欢
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多