我已经阅读了关于这个主题的所有SO线程,并广泛阅读了文档,甚至从这些问题/教程中复制和粘贴了代码。但我仍然无法使用matplotlib加载jpg图片、注释并保存绘图。我真的需要一些关于这个主题的建议。
以下是我的多次尝试之一的示例:
图像正确加载,当我交互式工作并运行plt.subplots()和ax.imshow(image)命令时,我看到一个弹出图像的绘图,并得到一条消息说这是一个AxesImage对象。
但当我尝试保存时,它显示“Figure size 432x288 with 0 Axes”,并且保存在磁盘上的结果图像是空白的。
我也尝试了以下内容以保存,但都没有成功。
基本上,创建图形和轴,并调用ax.imshow()并没有将图片添加到我的轴中,也没有ax.add_patch()的调用对轴做出任何效果。
我还尝试了不创建单独的轴来实现:
以下是我的多次尝试之一的示例:
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(image)命令时,我看到一个弹出图像的绘图,并得到一条消息说这是一个AxesImage对象。
但当我尝试保存时,它显示“Figure size 432x288 with 0 Axes”,并且保存在磁盘上的结果图像是空白的。
我也尝试了以下内容以保存,但都没有成功。
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...)
再次运行后,结果图为空且没有坐标轴。
我知道可能有一个显而易见的步骤我错过了,但我无法弄清楚是什么,即使复制和粘贴代码也没有帮助。
编辑:响应评论添加完整代码
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')