Наложение нового топора на существующие оси с использованием подстроек plt - Matplotlib [duplicate]

"error: (-215)" означает, что утверждение не выполнено. В этом случае cv :: imshow утверждает, что данное изображение не пусто: https://github.com/opencv/opencv/blob/b0209ad7f742ecc22de2944cd12c2c9fed036f2f/modules/highgui/src/window.cpp#L281

Как отмечено в учебнике Getting Started with Images OpenCV Python, если файл не существует, то cv2.imread () вернет None; это не вызывает исключения.

Таким образом, следующий код также приводит к ошибке «(-215) size.width> 0 & amp; size.height> 0»:

img = cv2.imread('no-such-file.jpg', 0)
cv2.imshow('image', img)

Убедитесь, что файл действительно существует по указанному пути. Если это так, возможно, изображение повреждено или является пустым изображением.

4
задан dvreed77 13 June 2013 в 12:15
поделиться

2 ответа

Как я уже сказал в комментарии, прочитайте . Как я могу прикрепить функцию pyplot к экземпляру фигуры? для объяснения разницы между интерфейсами OO и state-machine с matplotlib.

Вы должны изменить свои функции построения, чтобы быть чем-то вроде

def plot(..., ax=None, **kwargs):
    if ax is None:
        ax = gca()
    ax.plot(..., **kwargs)
5
ответ дан Community 22 August 2018 в 11:17
поделиться
  • 1
    Спасибо, это очень близко к тому, что я закончил делать. Можете ли вы сказать мне, почему есть свойство оси? Установка этого свойства должна связывать художников линии с этими осями в соответствии с документацией, но я этого не вижу. – dvreed77 14 June 2013 в 12:52
  • 2
    Я думаю, что это артефакт того, как создается документация, объект Line2D имеет свойство axes, но он задается кодом в plot, а значение, которое вы передаете, игнорируется. Можете ли вы указать мне, где документация говорит, что это должно иметь такое поведение? – tacaswell 14 June 2013 в 16:39

Вы можете использовать функцию графика определенных осей:

import matplotlib.pyplot as plt
from scipy import sin, cos
f, ax = plt.subplots(2,1)
x = [1,2,3,4,5,6,7,8,9]
y1 = sin(x)
y2 = cos(x)
plt.sca(ax[0])
plt.plot(x,y1)
plt.sca(ax[1])
plt.plot(x,y2)
plt.show()

Это должно быть показано на двух разных поднаборах.

1
ответ дан Harpe 22 August 2018 в 11:17
поделиться
  • 1
    Да, я понимаю, что могу это сделать, но это не сработает для моей функции plot в моем определении класса. Наверное, я могу вручную посмотреть, установлено ли свойство осей, но я думаю, я в замешательстве, почему функция plot принимает свойство axes, если оно не связано с этими осями. – dvreed77 13 June 2013 в 12:42
  • 2
    Я редактировал пример, чтобы использовать функцию sca(), которая устанавливает текущие активные оси. Теперь он должен работать с нормальной функцией графика, чтобы вы могли использовать ее в своем классе. – Harpe 13 June 2013 в 13:42
  • 3
    Как работает функция сюжета вашего класса? Для меня ваш пример отлично подходит для команды plot matplotlib.pyplot. Сюжет выполнен по указанным осям. – Rutger Kassies 13 June 2013 в 13:52
  • 4
    gah, это действительно крутой способ сделать это! Предварительно отредактированная версия намного предпочтительнее. – tacaswell 13 June 2013 в 14:49
Другие вопросы по тегам:

Похожие вопросы: