3

这只会模糊轮廓,但速度很慢。有更快的方法吗?

#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]

有什么方法可以加快操作速度吗?

4

0 回答 0