Python OpenCV cvCreateStructuringElementEx 从图像创建自定义形状
有人知道怎么用一张图片来创建一个 cvCreateStructuringElementEx
吗?我想用 opencv.cv.cvCreateStructuringElementEx()
,我的结构是一个160x120的黑色bmp图片,上面有一个白色的半椭圆。
im = Image.open("struture.jpeg", "r")
im = im.convert("1")
val = numpy.uint(im.getdata())
gim = opencv.cv.cvCreateStructuringElementEx(im.size[0], im.size[1], im.size[0]/2, im.size[1]/2, opencv.cv.CV_SHAPE_CUSTOM, val)
所以返回了一个错误:
TypeError: in method 'cvCreateStructuringElementEx', argument 6 of type 'int *'
2 个回答
0
用Python 2.7和OpenCV 2.3.0运行相同的指令时,我没有遇到错误。它返回了一个IplConvKernel,正如我预期的那样。
我猜你可能在用旧版的OpenCV,因为你使用的是它们函数的旧命名方式(比如cvCreateStructureElementEx和CreateStructureElementEx)。OpenCV在过去的版本中,Python的接口有过一些小错误,这可能就是其中之一。
在你的环境中,有没有可能把OpenCV更新到2.3.x版本?如果可以的话,确保你也在使用Python 2.6或2.7——据我所知,这两个版本是目前唯一被支持的。
编辑:嗯,刚看到这个问题的日期。没想到我回溯得这么久!不过,希望对某些人有用。
1
这可能解决了你的问题:
int val[9]={0,1,0,1,1,1,0,1,0};