对于cv2.blur,您需要给ksize作为两个元素的元组,如(2,2)。但是对于midBlur,ksize = 3就足够了。它将从中扣除平方核。
因此,使代码如下所示:
im = cv2.imread('./test_imgs/zzzyj.jpg')
cv2.imshow('Image', cv2.blur(im, (3,3)))
cv2.waitKey(0)
cv2.destroyAllWindows()
希望它能工作!!!
0
对于cv2.blur,您需要给ksize作为两个元素的元组,如(2,2)。但是对于midBlur,ksize = 3就足够了。它将从中扣除平方核。
因此,使代码如下所示:
im = cv2.imread('./test_imgs/zzzyj.jpg')
cv2.imshow('Image', cv2.blur(im, (3,3)))
cv2.waitKey(0)
cv2.destroyAllWindows()
希望它能工作!!!
0
将枕头从2.8.1
升级到4.1.0
时遇到相同的问题。
这是一段示例代码,在运行Pillow==4.1.0
时会生成异常:
from PIL import Image
img = Image.new('RGBA', [100,100])
# An empty mask is created to later overlay the original image (img)
mask = Image.new('L', img.size, 255)
# Get transparency (mask) layer pixels, they will be changed!
data = mask.load()
# The function used later
def foo(x,y): return round(1.0*x/(y+1))
# Update all pixels in the mask according to some function (foo)
for x in range(img.size[0]):
for y in range(img.size[1]):
data[x,y] = foo(x,y)
输出:
Traceback (most recent call last):
File "x.py", line 12, in <module>
data[x,y] = foo(x,y)
SystemError: new style getargs format but argument is not a tuple
此处的实际错误与异常中所述无关 。实际上,分配给数据的数据类型是错误的。在2.8.1
, int
和float
都是有效的,因此data[x,y]=1.0
是有效的,而在4.1.0
您需要使用类似以下任何一种的整数:
data[x,y]=1
data[x,y]=int(1.0)
因此,在上面的示例中,可以将foo
重新定义为以下内容,以使其在2.8.1
和4.1.0
中均可使用:
def foo(x,y): return int(round(1.0*x/(y+1)))
0
我只是试图使用cv2(opencv python绑定)将过滤器应用于图像。这是我的代码:
它几乎是从文档中复制粘贴的。但是,它只是行不通,没有比此消息更多的跟踪信息:
对于GaussianBlur,会发生相同的错误,但与MidBlur不会发生。有什么想法吗?