Search code examples
imagematplotlibimage-processingface-detection

How to save the image with the red bounding boxes on it detected by mtcnn?


I have this code in which mtcnn detects faces on an image, draws a red rectangle around each face and prints on the screen.

Code taken from: https://machinelearningmastery.com/how-to-perform-face-detection-with-classical-and-deep-learning-methods-in-python-with-keras/

But I want to save the image with the red boxes arround each face. So that i can do some preprocessing on it. Any help is good.

# draw an image with detected objects
def draw_image_with_boxes(filename, result_list):
    # load the image
    data = pyplot.imread(filename)
    # plot the image
    pyplot.imshow(data)
    # get the context for drawing boxes
    ax = pyplot.gca()
    # plot each box
    for result in result_list:
        # get coordinates
        x, y, width, height = result['box']
        # create the shape
        rect = Rectangle((x, y), width, height, fill=False, color='red')
        # draw the box
        ax.add_patch(rect)
    # show the plot
    pyplot.show()

filename = 'test1.jpg'
# load image from file
pixels = pyplot.imread(filename)
# create the detector, using default weights
detector = MTCNN()
# detect faces in the image
faces = detector.detect_faces(pixels)
# display faces on the original image
draw_image_with_boxes(filename, faces)

This image so that i can display it on an html


Solution

  • You can use matplotlib.pyplot.savefig. For example:

    # save the plot
    plt.savefig('image_with_box.jpg')
    # show the plot
    pyplot.show()
    

    You can find more details here: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.savefig.html