Невозможно отобразить изображение с помощью matplotlib.pyplot в проекте ipython - PullRequest
2 голосов
/ 25 апреля 2019

Я пытаюсь запустить FienSoP / canny_edge_detector код на github с моим собственным каталогом. Но вместо того, чтобы показывать фигуру, она показывает размер фигуры ().

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()

Так как, я начинающий, описанные ответы будут очень полезны. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

копирование строки

'/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 искать ваши данные в странном месте. Это является связанной проблемой.

Вам будет хорошо, если вы вручную наберете строку (или скопируете + вставите верхнюю строку в моем ответе).

0 голосов
/ 25 апреля 2019

Нужно использовать %matplotlib inline с iPython

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

См .: Печать с Matplotlib .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...