Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add text to an image segment

I have the following Python code, which adds a bounding box around the detected segments

%matplotlib qt
fig, ax = plt.subplots(figsize=(10, 6))
ax.imshow(image_label_overlay)
for region in regions:
 # take regions with large enough areas
 if region.area >= 100:
    # draw rectangle around segmented coins
    minr, minc, maxr, maxc = region.bbox
    rect = mpatches.Rectangle((minc, minr), maxc - minc, maxr - minr,
                              fill=False, edgecolor='red', linewidth=2)
    ax.add_patch(rect)


 ax.set_axis_off()

 plt.tight_layout()
 plt.show()

Instead of drawing a bounding box, I want to number the segments. i.e. I want to add a number at the center of each segment. How can I do this?

like image 748
Nour Avatar asked Dec 12 '18 09:12

Nour


1 Answers

plt.text(x, y, s, bbox=dict(fill=False, edgecolor='red', linewidth=2))

with x being the coodinate of your x-axis and y the coordinate of your y-axis. s is the string you want to write to your plot.

bbox let's you have both a text and a rectangle around it. bbox requires a dict with the Rectangle properties (https://matplotlib.org/api/_as_gen/matplotlib.patches.Rectangle.html#matplotlib.patches.Rectangle), which you already used in your code.

like image 100
offeltoffel Avatar answered Oct 22 '22 05:10

offeltoffel