opencv python 生成画布_将形状复制到空白画布(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

源图像:

我使用此代码:

1创建一个40x40像素的白色画布

2使用Opencv函数findContours找到了数字的轮廓(在本例中是5)。在

我要做的是复制这个形状(请不要边界框或矩形,蓝色的形状)到画布上。在

经过一些研究,我了解到opencv图像只是一个numpy数组。理论上,这个数组应该在新图像(我的白色画布)中转换,然后使用数组内的值重建形状。我是对的?在

有人知道怎么做吗?在某些情况下,围绕数字创建边界框/矩形会导致不准确。求你了,别把它当作解决办法。我已经用至少3-4种不同的方法完成了这个过程,结果还不够令人满意。在

所以,期望的输出应该是这样的。。在

谢谢。在

你可能感兴趣的:(opencv,python,生成画布)