Copiar forma en lienzo en blanco (OpenCV, Python)

import numpy as np
import cv2

blank_image = np.zeros((40,40,3), np.uint8)
blank_image.fill(255)

#cv2.imshow('i', blank_image)
#cv2.waitKey(0)

im = cv2.imread('img.png')
imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
image, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

cnt = contours[4]
cnts = cv2.drawContours(im,[cnt],0,(255,0,0), -1)

cv2.imshow('i', im)
cv2.waitKey(0)

for a in cnt:
    print(a) #this contour is a 3D numpy array

Imagen de origen:

Estoy usando este código para: 1. crear un lienzo blanco de 40x40 píxeles 2. encontré los contornos de los números (en este caso 5) usando la función OpencvfindContours.

Lo que quiero hacer es copiar esta forma (por favor, no el cuadro delimitador o el rectángulo, la forma azul) en el lienzo.

Después de un poco de investigación, aprendí que una imagen opencv es solo una matriz numpy. Esta matriz, teóricamente, debería traducirse en la nueva imagen (mi lienzo blanco ...) y luego reconstruir la forma usando los valores dentro de la matriz. Yo tengo razón ?

Alguien sabe como hacer eso? Crear un cuadro delimitador / rectángulo alrededor de los números, en algunos casos, resultaría inexacto. Por favor, no lo des como solución. Ya hice este proceso al menos de 3 a 4 formas diferentes y los resultados no son lo suficientemente satisfactorios.

Entonces, el resultado deseado sería algo como esto ...

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta