使用python opencv cv2在图像中仅模糊一个轮廓

时间:2013-03-14 07:47:00

标签: python opencv blur contour

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

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

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

0 个答案:

没有答案