Я прочитал все темы SO, которые смог найти по этой теме, и довольно подробно прочитал документацию, и даже скопировал и вставил код из этих вопросов / руководств.Но я все еще не могу загрузить JPG, аннотировать его и сохранить рисунок с помощью matplotlib.Я действительно мог бы воспользоваться некоторыми советами по этой теме.
Вот пример одной из моих многочисленных попыток:
import cv2
import matplotlib.pyplot as plt
image = cv2.imread(...filepath-to-img...)
fig, ax = plt.subplots()
ax.imshow(image)
ax.add_patch(plt.Rectangle(...params...)
plt.savefig(...filepath...)
Изображение загружается правильно, и когда я работаю в интерактивном режиме и запускаю plt.subplots (и команды ax.imshow (изображение), я вижу график с всплывающим изображением, и я получаю заметку о том, что это объект AxesImage.
Но когда мне нужно сохранить, он говорит«Размер рисунка 432x288 с 0 осями», и результирующее изображение, сохраненное на диск, пусто.
Я также попробовал следующее для сохранения безрезультатно.
my_fig = plt.cgf()
my_fig.savefig(...filepath...)
По сути, этокажется, что создание фигуры и осей и вызов ax.imshow () не добавляют изображение к моим осям, а также вызов ax.add_patch () ничего не делает с осями.
Я также пыталсяэто без создания отдельных осей, например:
plt.figure()
plt.imshow(image)
my_axes = plt.gca()
my_axes.add_patch(plt.Rectangle(...params...)
plt.savefig(...filepath...)
Опять же, полученная фигура пуста и имеет 0 осей.
Я знаю, что, вероятно, пропущен очевидный шаг, но я могуне понять, что это такое, и даже копирование и вставка кода не былоlp.
Редактировать: Добавление полного кода в ответ на комментарий
import cv2
from matplotlib import pyplot as plt
img = './1.png' # 364x364
image = cv2.imread(img)
fig, ax = plt.subplots()
ax.imshow(image)
color = (1, 0, 0, 1)
ax.add_patch(plt.Rectangle((139, 25), 85, 336,
color = color,
fill = False,
linewidth = 2))
plt.savefig('./annotated.png')