我已经阅读了我能找到的关于这个主题的所有 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...)
Run Code Online (Sandbox Code Playgroud)
图像加载正确,当我以交互方式工作并运行 plt.subplots( 和 ax.imshow(image) 命令时,我看到一个带有图像的绘图弹出,我收到一条说明它是 AxesImage 对象的注释。
但是当我要保存时,它显示“图形大小为 432x288 和 0 个轴”,并且保存到磁盘的结果图像是空白的。
我也尝试了以下保存无济于事。
my_fig = plt.cgf()
my_fig.savefig(...filepath...)
Run Code Online (Sandbox Code Playgroud)
基本上,似乎创建图形和轴并调用 ax.imshow() 并没有将图像添加到我的轴上, ax.add_patch() 调用也没有对轴执行任何操作。
我也试过它没有创建单独的轴,如:
plt.figure()
plt.imshow(image)
my_axes = plt.gca()
my_axes.add_patch(plt.Rectangle(...params...)
plt.savefig(...filepath...)
Run Code Online (Sandbox Code Playgroud)
同样,生成的图形是空白的并且有 0 个轴。
我知道我可能遗漏了一个明显的步骤,但我无法弄清楚它是什么,甚至复制和粘贴代码也无济于事。
编辑:添加完整代码以响应评论
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')
Run Code Online (Sandbox Code Playgroud)
小智 5
我也遇到了同样的问题,这对我有用。
from matplotlib.patches import Rectangle
fig,ax = plt.subplots(figsize=(15,12))
ax.imshow(frames[0])
x,y,w,h = bboxes[0]
ax.add_patch(Rectangle((x,y),w,h, linewidth=3, edgecolor='r', facecolor='none'))
plt.axis('off')
plt.savefig("out.png",bbox_inches='tight',pad_inches=0)
plt.show()
Run Code Online (Sandbox Code Playgroud)
在 plt.savefig() 之前写入 plt.show() 时,我也在磁盘上获得了一个空白图像
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |