这只会使轮廓模糊,但速度很慢。有更快的方法吗?
#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] ]
添加细节:我想要加速的一般操作类型是:对于某些输入图像,模糊(或以其他方式过滤)图像副本,在模糊副本中查找轮廓,复制所有像素轮廓到原始图像。
我已经读过for循环在Python中相对较慢。 numpy.where看起来像是这个工具。帮我解释一下语法。这不起作用:
img = np.where([temp!= 0],blur,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]
有什么方法可以加快操作速度?