这只会模糊轮廓,但速度很慢。有更快的方法吗?
#img is the image
#cnt is a contour
#blur is a blurred copy of the image
temp = np.zeros(img.shape,np.uint8)
cv2.drawContours(temp,[cnt],0,255,-1)
pp = np.transpose(np.nonzero(temp)) #all pixelpoints in contour
for k in range(0, len(pp)):
img[ pp[k,0],pp[k,1] ] = blur[ pp[k,0],pp[k,1] ]
添加细节:我想加快的一般操作类型是:对于某些输入图像,模糊(或以其他方式过滤)图像的副本,在模糊副本中找到轮廓,将轮廓内的所有像素复制到原始图像。
我读过 Python 中的 for 循环相对较慢。numpy.where看起来像这个工具。帮我看看语法。这不起作用:
img = np.where([temp != 0], 模糊, img)
编辑:这有效,速度是第一个代码块的两倍。
#img is the image
#cnt is a contour
#blur is a blurred copy of the image
temp = np.zeros(img.shape,np.uint8)
cv2.drawContours(temp,[cnt],0,255,-1)
x = np.where(temp == 0)
img[x] = blur[x]
有什么方法可以加快操作速度吗?